Tôi dường như không thể thực hiện SQL tạo cơ sở dữ liệu bằng cách sử dụng đối tượng DbCommand. Tôi đang làm gì sai? Dưới đây là mã của tôi:Làm thế nào để thực hiện SQL với các chú thích và câu lệnh GO sử dụng SqlConnection?
DbConnection connection; // initialized and opened elsewhere
DbCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
Dưới đây là các lỗi:
The query syntax is not valid., near term '/', line 1, column 2. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.EntitySqlException: The query syntax is not valid., near term '/', line 1, column 2.
Dưới đây là phần đầu tiên của tập tin. Ngoại lệ được ném về chỉ các nhận xét trên dòng đầu tiên:
/****** Object: Table [dbo].[User] Script Date: 10/08/2009 12:14:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[User](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NULL,
[EmailAddress] [nvarchar](100) NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Kịch bản lệnh SQL này thực thi tốt với SQL Management Studio Express (trên thực tế ứng dụng đã tạo tập lệnh này!). Nó chỉ là khung nhìn truy vấn Server Explorer của Visual Studio và từ mã của riêng tôi mà dường như không thành công.
Lưu ý: GO là không phải là một lệnh SQL, nó là một lệnh để các công cụ của khách hàng (ví dụ như OSQL, Query Analyzer, hoặc trong trường hợp này SMS.) Để phá vỡ kịch bản vào lô riêng biệt" ". Mỗi lô là một cuộc gọi riêng biệt đến máy chủ. –
Có thể trùng lặp [Thực thi một tập lệnh SQL lớn (với lệnh GO)] (http://stackoverflow.com/questions/40814/execute-a-large-sql-script-with-go-commands) –