【发布时间】:2021-01-14 02:10:10
【问题描述】:
我正在尝试传递一个 SQL 命令来删除具有 BY 属性(唯一 nvarchar)的数据,但我每次都会收到此解析错误。
解析查询出错:[Token line number = 1,Token line offset = 27,Token in error = BY]
我还尝试对另一个名为 Category 的属性执行相同的命令(它也是 nvarchar,但不是唯一的,不是键),命令通过并且包含输入字符串的行确实被删除。我在想是否可能是因为我将 BY 设置为 Unique、No 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 是大多数 SQL 语言中的保留字。您应该引用它或转义它...如何取决于您使用的特定引擎。