插入数据库c时出错

时间:2013-07-17 14:16:39

标签: c# sql database

只有澄清

没有错误

我试图插入一个名为“Test”的表,该表有一列,一个名为“id”的主键。我不熟悉在visual studio中使用数据库,并认为我的插入语法有问题,因为所有其他函数都可以正常工作。像这样的总体布局?

using (SqlCommand command = new SqlCommand("INSERT INTO Test (id) VALUES(1)", conn))

整体代码如下所示:

class Program
{
    static void Main(string[] args)
    {
        string connection =
            "Data Source=.\\SQLEXPRESS;" +
            "User Instance=true;" +
            "Integrated Security=true;" +
            "AttachDbFilename=|DataDirectory|HaythamService.mdf;";

        try
        {
            using (SqlConnection conn = new SqlConnection(connection))
            {
                conn.Open();
                using (SqlCommand command = new SqlCommand("INSERT INTO Test (id) VALUES(1)", conn))
                {
                    command.ExecuteNonQuery();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                Console.WriteLine(reader.GetValue(i));
                            }
                            Console.WriteLine();
                            Console.Read();
                        }
                    }
                }
                conn.Close();
            }
        }
        catch (Exception ex)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:2)

首先:吞下异常无济于事。删除try-catch-block并让您的应用程序遇到错误 - 然后您将看到问题所在。

其次:您正在使用ExecuteNonQuery执行INSERT命令,然后尝试使用SqlDataReader从中读取?你对此有何期望?

如果ID是主键列,也可能是主键违规错误的原因,因为实际上您使用相同的值执行相同的插入两次 - 这是不允许的对于主键。

简而言之:创建第二个命令ExecuteReader。该命令应为SELECT * FROM Test

第三:使用SqlConnectionStringBuilder类创建连接字符串而不是硬编码。这将帮助您防止无效的连接字符串。