2011-05-12 81 views
1

嗨,我試着創建表格在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

回答

0

我會刪除逗號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

0

我使用了這個,它聽起來像你正在使用SQL CE(爲了將來的參考,它總是很好地告訴我們什麼是SQL的實現正在使用)。

在CE中不支持括號[]作爲分隔符。嘗試從你的表名刪除這些。

+0

我刪除它,並嘗試它。像創建TABLE A – alice7 2011-05-12 20:40:26

0

儘管有多個查詢了一批正在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 
相關問題