我收到此错误:查询输入必须至少包含一个表或查询
我的代码是:
using (OleDbConnection myCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=timetabledata.accdb")){
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
string q = "INSERT INTO timehourly (teacherid,subjectid) Values ('@teacherID','@subjid')" + " WHERE hour='@i' AND dayid='@ds'";
cmd.Parameters.AddWithValue("@teacherID", Convert.ToInt32(teacher_combo.SelectedValue).ToString());
cmd.Parameters.AddWithValue("@subjid", Convert.ToInt32(subject_combo.SelectedValue).ToString());
cmd.Parameters.AddWithValue("@i",i.ToString());
cmd.Parameters.AddWithValue("@ds",ds.Tables[0].Rows[k].ItemArray[0].ToString());
cmd.CommandText = q;
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
System.Windows.Forms.MessageBox.Show("successfully added", "Caption", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);}
您需要从参数声明中删除撇号。还要验证您传递给查询的值中是否有数据。还分配你的CommandText
在添加参数之前。
您也可以将OleDbCommand
in a using
声明也已实施IDisposable
.
然后,你正在尝试做一个INSERT
with a WHERE
条款,这是行不通的。
INSERT
语句实际上是在表中“插入”一行,您不能在已经存在行的地方插入一行。
您正在寻找的是UPDATE
- 我编辑了下面的语法来反映这一点。
using (OleDbConnection myCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=timetabledata.accdb"))
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.CommandType = CommandType.Text;
string q = "UPDATE timehourly SET teacheridh = @teacherId, SET subjectidh = @subjid WHERE hour=@i AND dayid=@ds";
cmd.CommandText = q;
cmd.Parameters.AddWithValue("@teacherID", Convert.ToInt32(teacher_combo.SelectedValue).ToString());
cmd.Parameters.AddWithValue("@subjid", Convert.ToInt32(subject_combo.SelectedValue).ToString());
cmd.Parameters.AddWithValue("@i",i.ToString());
cmd.Parameters.AddWithValue("@ds",ds.Tables[0].Rows[k].ItemArray[0].ToString());
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
System.Windows.Forms.MessageBox.Show("successfully added", "Caption", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
如果你真的想做一个INSERT
然后就拿WHERE
从你的q
string.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)