大家好我试着在 sql compact中创建表格。
以下是查询:
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的行中给出了错误。
答案 0 :(得分:3)
不要使用dbo。 SQL CE不支持模式。 您可能需要单独执行查询。
这是一个类似的问题和解决方案: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/d6f1db96-8724-4376-990e-3f6da18c2d08/
答案 1 :(得分: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
);
答案 2 :(得分:0)
我搜索了这个,听起来你正在使用SQL CE
(为了将来参考,告诉我们你正在使用的SQL的实现总是很好。)
CE中不支持括号[]
作为分隔符。尝试从表名中删除它们。
答案 3 :(得分: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