c# - 有人可以解释这个异常(exception)的含义吗?连接字符串、表名、查询语法正确

标签 c# sql sql-server-ce sql-insert

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它是重载的。

阅读:Can we stop using AddWithValue() already?

关于c# - 有人可以解释这个异常(exception)的含义吗?连接字符串、表名、查询语法正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27165212/

相关文章:

c# - 如何使用 NPOI 读取上传的 Excel 文件而不存储在服务器或项目中

c# - 最有效(阅读时间)的字符串搜索方法是什么? (C#)

c# - 关于异步返回类型

c# - 从 SQL CE 获取行的选择到 C#

wix - 如何使用 WiX 安装程序包含 SQL CE?

c# - 为什么要在任务中使用多个重复的方法实现?

sql - PostgreSQL - 生成今天登录的用户列表,并且在接下来的 7 天内至少登录一次

mysql - 双向加密+查找?

java - 从第一个 SQL 查询获取结果,以便在第一个 SQL 查询中的第二个 SQL 查询中使用它

c# - 检索 ODBC 表并插入 SQL Server CE 数据库