我在将数据插入数据库时遇到错误。
错误是:
“查询值和目标字段的数量不相同”。
插入代码:
OleDbConnection vconn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Mutyyba\\Documents\\Database1.accdb");
vconn.Open();
string name = textBox1.Text;
string address = textBox3.Text;
int rollno = Convert.ToInt32(textBox2.Text);
string vquery = "insert into Table1 values(@vname,@vrollno,@vaddress)";
OleDbCommand vcomm = new OleDbCommand(vquery, vconn);
vcomm.Parameters.AddWithValue("@vname", name);
vcomm.Parameters.AddWithValue("@vrollno", rollno);
vcomm.Parameters.AddWithValue("@vaddress", address);
vcomm.ExecuteNonQuery();
MessageBox.Show("your record has been recorded sucessfully!");
vconn.Close();
我究竟做错了什么?
我想你只是错过了一些单引号。我看到您已用起始和结束单引号将所有参数括起来。看this http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/ed197cbb-db7e-43eb-b9d3-34fc4f98c41a/
另一件事是,当您传递大量参数时,请准备一个参数的 SqlCommand 对象.
See msdn http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx更多细节。
做这样的事情:
SqlCommand comm = new SqlCommand("INSERT INTO table VALUES (@txtsno, @txtdesg, @txtbasic)", connection);
comm.Parameters.AddWithValue("@txtsno", txtsno.Text.Trim());
comm.Parameters.AddWithValue("@txtsno", txtdesg.Text.Trim());
comm.Parameters.AddWithValue("@txtsno", txtbasic.Text.Trim());
这样会更清晰,也不容易出现SQL注入。 http://en.wikipedia.org/wiki/SQL_injection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)