收到错误:查询输入必须至少包含一个表或查询

2023-12-14

我收到此错误:查询输入必须至少包含一个表或查询 我的代码是:

    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(使用前将#替换为@)

收到错误:查询输入必须至少包含一个表或查询 的相关文章

随机推荐