SqlCeCommand cmd = new SqlCeCommand("INSERT INTO tbl_AStatus (Asset Status,Remarks) VALUES (@a, @b)", Login.sqlConn);
cmd.Parameters.AddWithValue("@a", txtAssetStatus.Text);
cmd.Parameters.AddWithValue("@b", txtRemarks.Text);
int a = cmd.ExecuteNonQuery();
MessageBox.Show(a.ToString());
异常显示:
There was an error parsing the query. [ Token line number = 1,Token line offset = 32,Token in error = Status ]
最佳答案
如果您的表名或列名包含空格,则需要将它们与方括号一起使用,例如 [Asset Status]
。但不推荐这样做。如果可以,最好将您的列名称更改为其他名称。
阅读:Database, Table and Column Naming Conventions?
也可以使用 using
statement处理您的数据库连接和对象。
using(SqlCeCommand cmd = Login.sqlConn.CreateCommand())
{
cmd.CommandText = "INSERT INTO tbl_AStatus ([Asset Status],Remarks) VALUES (@a, @b)";
cmd.Parameters.Add("@a", SqlDbType.NVarChar).Value = txtAssetStatus.Text;
cmd.Parameters.Add("@b", SqlDbType.NVarChar).Value = txtRemarks.Text;
// I assume your column types are NVarChar
Login.sqlConn.Open();
int a = cmd.ExecuteNonQuery();
MessageBox.Show(a.ToString());
}
并且不要使用 AddWithValue
方法。有时它可能会产生意想不到的结果。使用 SqlParameterCollection.Add
method它是重载的。
关于c# - 有人可以解释这个异常(exception)的含义吗?连接字符串、表名、查询语法正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27165212/