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();
}
}
答案 0 :(得分:2)
End
是您无法在自己的表格中使用的关键字 - 请使用类似EndDate
的内容。
另外:我认为Start
和End
是日期 - 我强烈建议您使用DATETIME
NVARCHAR(30)
{/ 1}}来保存这些日期!
所以我将CREATE TBALE
语句更改为以下内容:
string query = "CREATE TABLE " + name +
" (Manpower_Name NVARCHAR(50), Instance INT, StartDate DATETIME, EndDate DATETIME);";
然后你的代码应该可以正常工作。
答案 1 :(得分:1)
单词END是SQL CE中的保留关键字。如果你需要使用它,你应该用方形支架包围
string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), " +
"Instance INT, Start NVARCHAR(30), [End] NVARCHAR(30));";
答案 2 :(得分:1)
END
是Sql中的reserved word。
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));";