SQL Server CE查询错误(unhandles exception).从c#执行
本文关键字:exception 执行 unhandles Server CE 查询 错误 SQL | 更新日期: 2023-09-27 18:12:47
string query = "Create table " + name +
" (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), End NVARCHAR(30));";
我在c#中为SQL Server CE数据库(.sdf
文件)创建了这个连接字符串。但是我得到一个错误,如下所示:
解析查询出错。[令牌行号= 1,令牌行偏移量= 77,令牌错误=结束]
从函数执行:
public void create_proj_table(string name)
{
string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), End NVARCHAR(30));";
//open connection
if (this.OpenConnection() == true)
{
//create command and assign the query and connection from the constructor
SqlCeCommand cmd = new SqlCeCommand(query, connection);
//Execute command
cmd.ExecuteNonQuery();
//close connection
this.CloseConnection();
}
}
End
是一个关键字,你不能在你自己的表中使用-使用EndDate
之类的代替。
还有:我假设Start
和End
是日期-我强烈建议您使用DATETIME
而不是NVARCHAR(30)
来存储它们!
CREATE TBALE
语句改成这样:
string query = "CREATE TABLE " + name +
" (Manpower_Name NVARCHAR(50), Instance INT, StartDate DATETIME, EndDate DATETIME);";
,然后你的代码应该可以正常工作
END
是Sql中的保留字。
string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), End NVARCHAR(30));";
如果你必须使用它——也就是说,你不想改变行名——用'[]'把它括起来,像这样:
string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), [End] NVARCHAR(30));";
END是SQL CE中的保留关键字。如果你需要使用它,你应该用方括号把
string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), " +
"Instance INT, Start NVARCHAR(30), [End] NVARCHAR(30));";