我试图传递sql命令来删除具有属性BY(唯一nvarchar)的数据,但每次都会得到此解析错误。现在我也尝试对名为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);
}
答案 0 :(得分:1)
BY是大多数SQL方言中的保留字。
如果您在引用“驱动程序”表中的某列时,请尝试使用撇号或括号将其括起来,如下所示:
DELETE FROM Drivers WHERE [BY] = @BY
或可能:
DELETE FROM Drivers WHERE ´BY´ = @BY
取决于您正在使用的RDBMS。
答案 1 :(得分:1)
我认为BY
是一个保留字。尝试用括号转出它。
DELETE FROM Drivers WHERE [BY] = @BY
答案 2 :(得分:1)
BY是每个数据库中的保留字。 试试
DELETE FROM Drivers WHERE [BY] = @BY