-2

没有错误只是一个澄清

我试图插入一个名为“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)
        {

        }
    }
}
4

1 回答 1

2

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

其次:您正在执行 INSERT 命令ExecuteNonQuery,然后尝试使用SqlDataReader? 你期望从中得到什么样的输出?

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

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

第三:请使用SqlConnectionStringBuilder该类来创建连接字符串,而不是对其进行硬编码。这将帮助您防止无效的连接字符串。

于 2013-07-17T14:37:42.490 回答