我试图从表TEAM中获取id并在插入一些客户端时放入客户端..但是... 我应该在插入我的数据库时出现此错误。
System.Data.OleDb.OleDbException' occurred in System.Data.dll Query input must contain at least one table or query.
OleDbConnection con = new OleDbConnection(stringcon);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO [clients]([Firstname],[Lastname],[Email],[Phonenumber],[Address],[CNP],[SeriesCI],[NumberCI],[Sex],[CUI],[J],[Personaldescription],[Temperament],[Provenance],[Registerdata],[Idteam]) " +
"VALUES(@f,@l,@e,@ph,@add,@cnp,@ser,@n,@sex,@cui,@j,@pd,@te,@prov,@reg,(select team.id from team where team.Email=@email)) ";
// cmd.CommandText = "INSERT INTO [clients]([Firstname],[Lastname],[Email],[Phonenumber],[Address],[CNP],[SeriesCI],[NumberCI],[Sex],[CUI],[J],[Personaldescription],[Temperament],[Provenance],[Registerdata]) " +
//"VALUES(@f,@l,@e,@ph,@add,@cnp,@ser,@n,@sex,@cui,@j,@pd,@te,@prov,@reg) ";
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);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
所以..我用SQL
尝试了类似的东西,但它有效,但是这种格式不起作用。我真的需要使用Olebd
。
cmd.CommandText = "INSERT INTO [clients]([Firstname],[Lastname],[Email],[Phonenumber],[Address],[CNP],[SeriesCI],[NumberCI],[Sex],[CUI],[J],[Personaldescription],[Temperament],[Provenance],[Registerdata],[Idteam]) " +
"Select @f,@l,@e,@ph,@add,@cnp,@ser,@n,@sex,@cui,@j,@pd,@te,@prov,@reg,team.[id] from team where team.[Email]=@email";
答案 0 :(得分:0)
您无法在INSERT INTO ... VALUES ...
查询中使用子查询。您需要使用INSERT INTO .. SELECT
。由于您没有使用主查询进行选择,因此您可以这样做,而不是使用子查询。
使用以下SQL而不是当前的SQL字符串
INSERT INTO [clients]([Firstname],[Lastname],[Email],[Phonenumber],[Address],[CNP],[SeriesCI],[NumberCI],[Sex],[CUI],[J],[Personaldescription],[Temperament],[Provenance],[Registerdata],[Idteam])
SELECT @f,@l,@e,@ph,@add,@cnp,@ser,@n,@sex,@cui,@j,@pd,@te,@prov,@reg, team.id
from team
where team.Email=@email
请注意,如果电子邮件不是唯一的,则会插入每team.id
个team.Email
的多行。