C# 错误:";分析查询时出错。”;尝试创建SQL Server CE表时
我正在尝试在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) {
,
,但即使只是用数字运行它,我也会收到同样的错误。我在命令上做了打印,并在上运行了它:它运行得很好。有人能引导我朝着正确的方向去寻找我所缺少的吗
以下是错误:
分析查询时出错。[行号中的令牌=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”);这是我的密码。。你的代码是正确的。谢谢你抽出时间。