使用参数将数据插入访问数据库

时间:2017-09-21 08:30:29

标签: c#

我不理解以下代码:

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属性尚未初始化。我不理解的是什么?

1 个答案:

答案 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查询中的命名参数。参数值将按位置替换。