我正在尝试在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]))
答案 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。