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

3 回答 3

2

End是您不能在您自己的表格中使用的关键字 - 请改用类似的关键字EndDate

另外:我会假设Start并且End是日期 - 我强烈建议您使用DATETIMEinstad ofNVARCHAR(30)来存储这些!

所以我会把CREATE TBALE声明改成这样:

string query =  "CREATE TABLE " + name + 
                " (Manpower_Name NVARCHAR(50), Instance INT, StartDate DATETIME, EndDate DATETIME);";

然后你的代码应该可以正常工作。

于 2013-05-09T15:32:52.407 回答
1

END 一词是 SQL CE 中的保留关键字。如果你需要使用它,你应该用方括号括起来

string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), " + 
              "Instance INT, Start NVARCHAR(30), [End] NVARCHAR(30));";
于 2013-05-09T15:33:41.123 回答
1

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));";
于 2013-05-09T15:36:09.760 回答