我不理解以下代码:
using (OleDbConnection connectionFail = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Fail_DB.mdb"))
{
connectionFail.Open();
var cmd = new SqlCommand("INSERT INTO SUMMARY (A, B, C) VALUES (@A, @B, @C)");
cmd.Parameters.Add("@A", SqlDbType.NVarChar, 50).Value = "A";
cmd.Parameters.Add("@B", SqlDbType.NVarChar, 50).Value = "B";
cmd.Parameters.Add("@C", SqlDbType.NVarChar, 50).Value = "C";
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
connectionFail.Close();
cmd.Dispose();
}
connectionFail.Close();
}
}
我只想将数据添加到SUMMARY表中。我得到ExecuteNonQuery:Connection属性尚未初始化。我不理解的是什么?
答案 0 :(得分:1)
已创建连接,但从未在命令对象上设置。 BTW SqlCommand是一个SQL Server客户端命令。
而不是:
var cmd = new SqlCommand("INSERT INTO SUMMARY (A, B, C) VALUES (@A, @B, @C)");
使用
var cmd = new OleDbCommand("INSERT INTO SUMMARY (A, B, C) VALUES (?, ?, ?)",connection);
Access不支持 SQL查询中的命名参数。参数值将按位置替换。