只有澄清
没有错误我试图插入一个名为“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)
{
}
}
}
答案 0 :(得分:2)
首先:吞下异常无济于事。删除try-catch-block并让您的应用程序遇到错误 - 然后您将看到问题所在。
其次:您正在使用ExecuteNonQuery
执行INSERT命令,然后尝试使用SqlDataReader
从中读取?你对此有何期望?
如果ID
是主键列,也可能是主键违规错误的原因,因为实际上您使用相同的值执行相同的插入两次 - 这是不允许的对于主键。
简而言之:创建第二个命令ExecuteReader
。该命令应为SELECT * FROM Test
。
第三:使用SqlConnectionStringBuilder
类创建连接字符串而不是硬编码。这将帮助您防止无效的连接字符串。