错误:“解析查询时出错。”在尝试创建SQL Server CE表时

时间:2014-06-11 19:26:07

标签: c# sql-server-ce

我正在尝试在SQL Server CE数据库中创建一个表。我收到一个错误。我以为它是名称中的',但即使只使用我收到相同错误的数字运行它。我对命令进行了打印并在http://www.w3schools.com/sql/trysql.asp?filename=trysql_create_table处运行它并且运行正常。有人能引导我走向正确的方向吗?

这是错误:

  

解析查询时出错。 [行号= 1的令牌,令牌行偏移13,错误191019中的令牌]

以下是代码:

    public static void CreateDataTable(string dataBase, string tableName)
    {
        try
        {
            tableName = "John's License_191019";
            var createUser = string.Format(@"CREATE TABLE [{0}] (
                   [Identifier]  INT NOT NULL ,
                   [Id]  INT NULL ,
                   [Name]  NVARCHAR(255) NULL ,
                   [Zone]  INT NULL ,
                   [Map]  INT NULL ,
                   [State]  NVARCHAR(255) NULL ,
                   [Type]  NVARCHAR(255) NULL ,
                   [Faction]  NVARCHAR(255) NULL ,
                   [X]  FLOAT NULL ,
                   [Y]  FLOAT NULL ,
                   [Z]  FLOAT NULL ,
                   [Create_Date]  DATETIME NULL ,
                   [Update_Date]  DATETIME NULL ,
                   PRIMARY KEY ([Identifier]))", tableName);

            using (var conn = new SqlCeConnection(SQLHelper.Connection(dataBase)))
            {
                conn.Open();

                using (var cmd = new SqlCeCommand(createUser, conn))
                {
                    try
                    {
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("ExecuteNonQuery: " + ex);
                    }
                    finally
                    {
                        cmd.Dispose();
                    }
                }

                conn.Close();
                conn.Dispose();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("CreateDataTable: " + ex);
            throw;
        }
    }

字符串如何打印:

  

CREATE TABLE [John's License_191019]([Identifier] INT NOT NULL,[Id] INT NULL,[Name] NVARCHAR(255)NULL,[Zone] INT NULL,[Map] INT NULL,[State ] NVARCHAR(255)NULL,[Type] NVARCHAR(255)NULL,[Faction] NVARCHAR(255)NULL,[X] FLOAT NULL,[Y] FLOAT NULL,[Z] FLOAT NULL,[Create_Date] DATETIME NULL,[ Update_Date] DATETIME NULL,PRIMARY KEY([Identifier]))

1 个答案:

答案 0 :(得分:1)

Sql Compact Edition的正确分隔符不是反引号,而是打开/关闭方括号

var createUser = @"CREATE TABLE [John's License_191019] (
                       [Identifier]  INT NOT NULL,
                       [Id]  INT NULL ,
                       [Name]  NVARCHAR(255) NULL ,
                       [Zone]  INT NULL ,
                       [Map]  INT NULL ,
                       [State]  NVARCHAR(255) NULL ,
                       [Type]  NVARCHAR(255) NULL ,
                       [Faction]  NVARCHAR(255) NULL ,
                       [X]  FLOAT NULL ,
                       [Y]  FLOAT NULL ,
                       [Z]  FLOAT NULL ,
                       [Create_Date]  DATETIME NULL ,
                       [Update_Date]  DATETIME NULL ,
                       PRIMARY KEY ([Identifier]))";

顺便说一下,上面的代码不需要string.Format(一个拼写错误?)

最后两个笔记 空的Try / Catch是一种非常糟糕的做法。我建议删除它或处理异常。
using statement无需对所涉及的对象调用Close和Dispose。