C# 错误:";分析查询时出错。”;尝试创建SQL Server CE表时

C# 错误:";分析查询时出错。”;尝试创建SQL Server CE表时,c#,sql-server-ce,C#,Sql Server Ce,我正在尝试在SQL Server CE数据库中创建一个表。我收到一个错误。我以为是名字里的,,但即使只是用数字运行它,我也会收到同样的错误。我在命令上做了打印,并在上运行了它:它运行得很好。有人能引导我朝着正确的方向去寻找我所缺少的吗 以下是错误: 分析查询时出错。[行号中的令牌=1,令牌行偏移量13,令牌出错191019] 代码如下: public static void CreateDataTable(string dataBase, string tableName) {

我正在尝试在SQL Server CE数据库中创建一个表。我收到一个错误。我以为是名字里的
,但即使只是用数字运行它,我也会收到同样的错误。我在命令上做了打印,并在上运行了它:它运行得很好。有人能引导我朝着正确的方向去寻找我所缺少的吗

以下是错误:

分析查询时出错。[行号中的令牌=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;
        }
    }
字符串的打印方式:

创建表[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、[X]FLOAT NULL、[Y]FLOAT NULL、[Z]FLOAT NULL、[CREATE_Date]DATETIME NULL、[Update_Date]DATETIME NULL,主键([标识符])


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(打字错误?)

和两个最后的注释。
徒劳的尝试是一种非常糟糕的做法。我建议删除它或处理异常。

using语句
消除了对相关对象调用Close和Dispose的需要。

string format在粘贴代码之前没有删除它。表名实际上被传递到方法中。我只是使用表名“John's License_191019”作为测试用例。还有我删除的try-catch的代码。基本上只是记录与问题=)无关的代码。我收到此错误:“解析查询时出错。[第1行中的令牌,第13行中的令牌,第191019行中的令牌]”我使用了您的代码,但这次我使用了字符串。格式并使用了“John's Licenses_191019”字符串。您能用
createUser
变量的最新版本更新您的问题吗?抱歉,我无法重现。如果使用的表名中没有嵌入空格和引号,会发生什么情况?错误被抛出到这里:MessageBox.Show(“ExecuteNonQuery:+ex”);这是我的密码。。你的代码是正确的。谢谢你抽出时间。