c#访问数据库程序

时间:2011-10-26 02:24:11

标签: c# ms-access dao

String strSql = "insert into BaseData (Item," + dataGridView1.Columns[3].Name + "," + dataGridView1.Columns[4].Name + ") values ('" + row.Cells[0].Value + "','" + row.Cells[3].Value + "','" + row.Cells[4].Value + "')";                        

objCmd = new OleDbCommand(strSql, lConn);  
objCmd.ExecuteNonQuery();

strSql = "select id from BaseData where Item = '" + row.Cells[0].Value + "' and " + dataGridView1.Columns[1].Name + " = '" + row.Cells[3].Value + "' And " + dataGridView1.Columns[2].Name + " = '" + row.Cells[4].Value + "'";

OleDbCommand command = new OleDbCommand(strSql, lConn);                           
OleDbDataReader reader = command.ExecuteReader();   
String id = "";   
while (reader.Read())
{  
  id = reader.GetString(0);
}    
reader.Close();

strSql = "insert into tranjaction (Base_id,quentity,price,other) values ('" + id + "' , ' " + row.Cells[2].Value + "','" + row.Cells[1].Value + "')";

objCmd = new OleDbCommand(strSql, lConn);  
objCmd.ExecuteNonQuery();

运行此操作时,Microsoft Visual Studio错误发生在第10行。(ExecuteReader)

错误就在这里。

  

“System.Data.OleDb.OleDbException”类型的未处理异常   发生在System.Data.dll

中      

附加信息:没有给出一个或多个所需的值   参数。

我该如何解决此错误?。

3 个答案:

答案 0 :(得分:2)

您的字段名称是错误的(quentity?)还是因为您的参数字段不平衡。您正在插入4个字段,但您只提供3个值。使用参数代替,它会让您的生活更轻松。

尝试将其更改为:

strSql = "insert into tranjaction (Base_id,quentity,price,other) values (@id , @quentity, @price, @other)";
using (OleDbCommand cmd = new OleDbCommand(sqlSql, IConn)) {
  cmd.Parameters.AddWithValue("@id", id);
  cmd.Parameters.AddWithValue("@quentity", row.Cells[2].Value);
  cmd.Parameters.AddWithValue("@price", row.Cells[1].Value);
  cmd.Parameters.AddWithValue("@other", other);  //  <- missing
  cmd.ExecuteNonQuery();
}

答案 1 :(得分:1)

在这一行

strSql = "insert into tranjaction (Base_id,quentity,price,other) values ('" + id + "' , ' " + row.Cells[2].Value + "','" + row.Cells[1].Value + "')";

您正在插入4个值(Base_id,quentity,price,other),但您只插入3个值(id,row.Cells [2] .Value,row.Cells [1] .Value)。为other提供值可以解决问题。

另一件可能导致此错误的事情(可能是您的情况)是,如果您拼错了其中一个列名称。由于您正在使用datagridview中的列名,并且您的一些书面列名似乎拼写错误,因此您应该仔细检查查询字符串中的拼写。

答案 2 :(得分:1)

当我在过去收到此错误时,一直是因为一个简单的拼写错误。就像其他人提到的一样,看起来你拼错了“数量”错误,这可能是问题的一部分。