错误解析查询:[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);
}
我认为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