【发布时间】:2011-12-24 04:17:02
【问题描述】:
将数据插入数据库时出现错误。
错误是:
“查询值和目标字段的数量不一样”。
插入代码:
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();
我做错了什么?
【问题讨论】:
-
查询中有大约16个字段,数据库表中的列数是多少?
-
我的数据库表中有 16 列
-
请在有人咬你之前开始使用
SqlParameter。 -
实际上,您在查询中拥有所有一个预期字段。开头有一个单引号,结尾有一个单引号,因此除非这些字符串中有任何未转义的引号,否则您将尝试插入一个字段。因此,你的错误。但不要停止修复它,查看参数化查询,以免遇到那些讨厌的 SQL 注入问题。
-
那么缺少一些单引号,检查关联的数据类型,就像它应该是单引号中的名称
values('" + Name + "',
标签: c# winforms ms-access oledbconnection