有人可以解释这个例外的含义吗?连接字符串、表名、查询语法正确
本文关键字:字符串 连接 表名 语法 查询 解释 | 更新日期: 2023-09-27 18:32:16
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());
显示的异常:
解析查询时出错。[令牌行号=1,令牌 行偏移量 = 32,标记错误 = 状态 ]
如果您的表名或列名包含空格,则需要将它们与方括号一起使用,例如 [Asset Status]
。但不建议这样做。如果可以的话,最好将您的列名称更改为其他名称。
阅读:数据库、表和列命名约定?
还可以使用 using
语句来释放数据库连接和对象。
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
方法,它是重载。
阅读:我们可以停止使用AddWithValue()
吗?