查询值和目标字段的数量不相同 OLEDB
Number of query values and destination fields are not the same OLEDB
我在尝试将数据插入数据库时遇到错误。
这是错误。
"System.Data.OleDb.OleDbException: 'Number of query values and destination fields are not the same.'".
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);
在数据库(客户端)中我有 17 列 + id(但 id
是自动递增的)。
我究竟做错了什么?
clients
team
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";
尝试像这样更改您的 INSERT 语句:
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],@agent from team where team.[Email]=@email";
请注意,我已将 ,@agent
部分从 WHERE
子句的末尾移动到 SELECT
字段列表的末尾。
但是,我不确定您的总体想法是否正确。如果您要从 team
table 中选择要插入的值,为什么还要将它们指定为命令参数?
我在尝试将数据插入数据库时遇到错误。 这是错误。
"System.Data.OleDb.OleDbException: 'Number of query values and destination fields are not the same.'".
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);
在数据库(客户端)中我有 17 列 + id(但 id
是自动递增的)。
我究竟做错了什么?
clients
team
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";
尝试像这样更改您的 INSERT 语句:
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],@agent from team where team.[Email]=@email";
请注意,我已将 ,@agent
部分从 WHERE
子句的末尾移动到 SELECT
字段列表的末尾。
但是,我不确定您的总体想法是否正确。如果您要从 team
table 中选择要插入的值,为什么还要将它们指定为命令参数?