SQL Server CE查询错误(未处理的异常)。从c#执行

时间:2013-05-09 15:14:55

标签: c# sql-server-ce

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();
    }
}

3 个答案:

答案 0 :(得分:2)

End是您无法在自己的表格中使用的关键字 - 请使用类似EndDate的内容。

另外:我认为StartEnd是日期 - 我强烈建议您使用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));";