DbCommand 无法在一个 ExecuteNonQuery() 中运行多个 SQL 命令

发布于 2024-11-14 00:23:24 字数 709 浏览 5 评论 0原文

您好,我遇到以下问题,但无法解决。

使用 DbCommand 我尝试执行此 SQL 语句

Dim strCommnad As String = 
"CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +                                 
"CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine +
"EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';"

command.CommandText = strCommnad              
command.CommandType = CommandType.Text                
command.ExecuteNonQuery()

,但总是收到错误消息

关键字“CREATE”附近的语法不正确。

但是,当我从 strCommand 独立运行每个命令时,一切正常。

我正在使用 VS 2010 Professional 和 SQL Server 2008 R2 Express。

感谢您的任何帮助。

Hello I have the following problem and I can't solve it.

With DbCommand I'm trying execute this SQL statement

Dim strCommnad As String = 
"CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +                                 
"CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine +
"EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';"

command.CommandText = strCommnad              
command.CommandType = CommandType.Text                
command.ExecuteNonQuery()

but I always get this an error message

Incorrect syntax near the keyword 'CREATE'.

But when I run each command from strCommand standalone then everything works fine.

I'm using VS 2010 Professional and SQL Server 2008 R2 Express.

Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北风几吹夏 2024-11-21 00:23:24

我不完全确定你想要做什么 - 但你的方法似乎过于复杂......

你似乎在你的 XLibPKID 列中添加了 DEFAULT 子句 -正确的?此ALTER TABLE 语句也应该执行此操作:

command.CommandText = 
   "ALTER TABLE [dbo].[DOMAIN_XLibPKID_D]  " +
   "    ADD CONSTRAINT DF_XLibPKID DEFAULT (0) FOR XLibPKID";
command.ExecuteNonQuery()

这只是向您的表添加一个单独的DEFAULT CONSTRAINT

I'm not entirely sure what you're trying to do - but your approach seems overly complicated ...

You appear to be adding a DEFAULT clause to your XLibPKID column - right? This ALTER TABLE statement should do that, too:

command.CommandText = 
   "ALTER TABLE [dbo].[DOMAIN_XLibPKID_D]  " +
   "    ADD CONSTRAINT DF_XLibPKID DEFAULT (0) FOR XLibPKID";
command.ExecuteNonQuery()

This just adds a separate DEFAULT CONSTRAINT to your table.

无需解释 2024-11-21 00:23:24

尝试在每个语句之间添加 GO

Dim strCommnad As String =  "CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +
"GO; CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine + 
"GO; EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';" 

Try adding a GO between each statement:

Dim strCommnad As String =  "CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +
"GO; CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine + 
"GO; EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';" 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文