错误解析查询:[Token行号= 1,Token行偏移量= 27,Token in Error = BY]

本文关键字:Token 偏移量 Error BY in 查询 误解 错误 行号 | 更新日期: 2023-09-27 18:03:11

我试图通过SQL命令来删除具有BY(唯一nvarchar)属性的数据,但每次我都得到此解析错误。

解析错误查询:[Token行号= 1,Token行偏移量= 27,Token in Error = BY]

我还尝试对一个名为Category的不同属性(也是nvarchar,但不是唯一的,也不是键)执行相同的命令,命令通过,包含输入字符串的行确实被删除。我在想,如果它可能是因为我有BY设置为唯一,无NULL, KEY..或者别的什么。下面是执行命令的按钮的简单代码。

    public SqlCeConnection cn = new SqlCeConnection(@"Data Source=GAI_Database.sdf");
    private void button1_Click(object sender, EventArgs e)
    {
        cn.Open();
        SqlCeCommand cm1 = new SqlCeCommand("DELETE FROM Drivers WHERE BY = @BY", cn);
        //cm1.Parameters.AddWithValue("@BY", textBox1.Text);
        cm1.Parameters.Add("@BY", System.Data.SqlDbType.NVarChar).Value = textBox1.Text;

        try
        {
            cm1.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        cn.Close();
        this.driversTableAdapter.Fill(this.gAI_DatabaseDataSet.Drivers);
    }

错误解析查询:[Token行号= 1,Token行偏移量= 27,Token in Error = BY]

我认为BY是一个保留词。试着用括号转义。

DELETE FROM Drivers WHERE [BY] = @BY

BY在大多数SQL方言中是保留字。

如果您引用的是Drivers表中的列,请尝试用撇号或括号将其括起来,如:

DELETE FROM Drivers WHERE [BY] = @BY

或:

DELETE FROM Drivers WHERE ´BY´ = @BY

BY在所有数据库中都是保留字。试着

DELETE FROM Drivers WHERE [BY] = @BY