解析查询时出错。 [令牌行号] SQL创建表时出错
嗨,我试着创建表格在sql compact。解析查询时出错。 [令牌行号] SQL创建表时出错
下面是该查询:
CREATE TABLE [dbo.A]
(
Id nvarchar(37) NOT NULL CONSTRAINT Info_PK PRIMARY KEY,
ImportDate datetime NOT NULL
);
CREATE TABLE [dbo.B]
(
Id uniqueidentifier PRIMARY KEY,
DeviceId smallint,
);
但它在它试着创建表B.
请勿使用dbo。 SQL CE中不支持架构。 而你可能需要单独执行你的查询。
下面是一个类似的问题和解决方案: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/d6f1db96-8724-4376-990e-3f6da18c2d08/
lol ibram:我即将发布,我也从那里得到答案。 – alice7 2011-05-12 20:59:34
我会删除逗号DEVICEID SMALLINT
CREATE TABLE [dbo.A]
(Id nvarchar(37) NOT NULL CONSTRAINT Info_PK PRIMARY KEY,
ImportDate datetime NOT NULL
);
CREATE TABLE [dbo.B] (Id uniqueidentifier PRIMARY KEY, DeviceId smallint
);
后的行给错误
我试过了,仍然给我创建表的错误在线号码创建[DBo.B] – alice7 2011-05-12 20:23:51
我使用了这个,它听起来像你正在使用SQL CE
(为了将来的参考,它总是很好地告诉我们什么是SQL的实现正在使用)。
在CE中不支持括号[]
作为分隔符。尝试从你的表名删除这些。
我删除它,并尝试它。像创建TABLE A – alice7 2011-05-12 20:40:26
尽管有多个查询了一批正在SQL Server Management Studio中,它不会与SqlCeCommand工作。
你必须在多个查询中拆分你的批处理(你可以使用一个事务来处理所有的查询被执行或没有)。我建议使用ExecuteNonQuery,因为它不使用游标(这可能会在事务中造成一些错误)。
您可以使用下面的示例。
Using connexion As New SqlCeConnection(connexionstring)
connexion.Open()
Dim transaction As SqlCeTransaction = connexion.BeginTransaction()
Try
Dim batch As String = GetCommandText()
For Each query In batch.Split(";")
If Not String.IsNullOrWhiteSpace(query) Then
Dim command As New SqlCeCommand(query, connexion, transaction)
command.ExecuteNonQuery()
End If
Next
transaction.Commit()
Catch ex As Exception
transaction.Rollback()
Throw
End Try
End Using
如何向我们展示完整查询?当然,你并不是真的想创建没有字段的表格。还要注意,你可能是指'dbo.A',而不是'[dbo.A]'。 – 2011-05-12 20:10:04
@JOhn:我在顶部 – alice7 2011-05-12 20:14:21
上做了一个问题为什么在DeviceId smallint之后有逗号?这之后有什么东西吗? – ibram 2011-05-12 20:20:05