【发布时间】:2018-03-20 14:49:32
【问题描述】:
我在尝试将数据插入数据库时遇到错误。 这是错误。
“System.Data.OleDb.OleDbException:'查询值和目标字段的数量不同。'”。
cmd.CommandText = "INSERT INTO [clients]([Firstname],[Lastname],[Email],[Phonenumber],[Address],[CNP],[SeriesCI],[NumberCI],[Sex],[CUI],[J],[Personaldescription],[Temperament],[Provenance],[Registerdata],[Idteam],[NumeAgent])" +
"Select @f,@l,@e,@ph,@add,@cnp,@ser,@n,@sex,@cui,@j,@pd,@te,@prov,@reg,team.[id] from team where team.[Email]=@email,@agent";
cmd.Parameters.AddWithValue("@f", materialSingleLineTextField16.Text);
cmd.Parameters.AddWithValue("@l", materialSingleLineTextField15.Text);
cmd.Parameters.AddWithValue("@e", materialSingleLineTextField14.Text);
cmd.Parameters.AddWithValue("@ph", materialSingleLineTextField13.Text);
cmd.Parameters.AddWithValue("@add", materialSingleLineTextField6.Text);
cmd.Parameters.AddWithValue("@cnp", materialSingleLineTextField1.Text);
cmd.Parameters.AddWithValue("@ser", materialSingleLineTextField3.Text);
cmd.Parameters.AddWithValue("@n", materialSingleLineTextField2.Text);
cmd.Parameters.AddWithValue("@sex", gender);
cmd.Parameters.AddWithValue("@cui", materialSingleLineTextField4.Text);
cmd.Parameters.AddWithValue("@j", materialSingleLineTextField5.Text);
cmd.Parameters.AddWithValue("@pd", richTextBox2.Text);
cmd.Parameters.AddWithValue("@te", bunifuDropdown1.selectedValue);
cmd.Parameters.AddWithValue("@prov", bunifuDropdown2.selectedValue);
cmd.Parameters.AddWithValue("@reg", DateTime.Now.ToString("dd-MM-yyyy HH: mm:ss"));
cmd.Parameters.AddWithValue("@email", Form1.Email);
cmd.Parameters.AddWithValue("@agent", NumeAgent);
在 DB(客户端)中,我有 17 列 + id(但 id 是自动递增的)。
我究竟做错了什么?
cmd.CommandText = "INSERT INTO [clients]([Firstname],[Lastname],[Email],[Phonenumber],[Address],[CNP],[SeriesCI],[NumberCI],[Sex],[CUI],[J],[Personaldescription],[Temperament],[Provenance],[Registerdata],[NumeAgent],[Idteam])" + "Select @f,@l,@e,@ph,@add,@cnp,@ser,@n,@sex,@cui,@j,@pd,@te,@prov,@reg,[Firstname]+' '+[Lastname] from team where [Email]=@email,team.[id] from team where team.[Email]=@email";
【问题讨论】:
-
[NumeAgent]没有对应的插入值。 -
Bug 在这里:
team.[Email]=@email,@agent",@agent` 列值在WHERE子句之后指定。 -
@AlexK。该值取自函数。
-
您不能在 INSERT 语句中放置自动增量字段。这在 MSSQL 中很简单,不确定 MS Access 中的最佳方式。您可能需要使用带有新行的 DataTable,然后使用 DataAdapter 来 Update(),然后您的 DataTable 将填充新的 id。希望您可以使用 MS Access 搜索更好的方法。
-
我没有将自动增量放入插入语句中。
标签: c# ms-access oledb oledbcommand