解析查询时出错。 [令牌行号] 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.

+5

如何向我们展示完整查询?当然,你并不是真的想创建没有字段的表格。还要注意,你可能是指'dbo.A',而不是'[dbo.A]'。 – 2011-05-12 20:10:04

+0

@JOhn:我在顶部 – alice7 2011-05-12 20:14:21

+1

上做了一个问题为什么在DeviceId smallint之后有逗号?这之后有什么东西吗? – ibram 2011-05-12 20:20:05

请勿使用dbo。 SQL CE中不支持架构。 而你可能需要单独执行你的查询。

下面是一个类似的问题和解决方案: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/d6f1db96-8724-4376-990e-3f6da18c2d08/

+1

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 
); 
后的行给错误
+0

我试过了,仍然给我创建表的错误在线号码创建[DBo.B] – alice7 2011-05-12 20:23:51

我使用了这个,它听起来像你正在使用SQL CE(为了将来的参考,它总是很好地告诉我们什么是SQL的实现正在使用)。

在CE中不支持括号[]作为分隔符。尝试从你的表名删除这些。

+0

我删除它,并尝试它。像创建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