【问题标题】:SQLDataadapter not working with GOSQLDataadapter 不适用于 GO
【发布时间】:2012-05-23 09:22:57
【问题描述】:

我正在使用 SQLDataAdapter 运行脚本。脚本如下,

ALTER TABLE dbo.Table1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
select Has_Perms_By_Name(N'dbo.Table1', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.Table1', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.Table1', 'Object', 'CONTROL') as Contr_Per BEGIN TRANSACTION
GO
ALTER TABLE dbo.Table2
DROP CONSTRAINT DF_Table2
GO

它给了我错误,因为 GO 附近的语法不正确。如果我从查询文本中删除 GO,它可以正常工作。但我只需要执行这个脚本。

这是一个 c# 代码。 QueryText 是一个字符串,它包含整个查询以及 SET 和 GO。

DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(_connectionString);
SqlDataAdapter da = new SqlDataAdapter(QueryText, conn);
da.Fill(ds);

有谁知道怎么用。

提前致谢,
维杰

【问题讨论】:

  • 上述脚本的哪一部分需要运行?如果您删除所有GO(以及BEGIN/COMMIT),您可以成功运行它吗?你能告诉我们你的代码吗?
  • 如果我用分号替换 GO,它似乎可以工作。但不确定这是否是正确的做法。
  • @Vijay,go 标签用于 Go 语言。你能把它从问题中删除吗?谢谢。

标签: c# sql sqldataadapter


【解决方案1】:

GO 是 Management Studio 或其他 SQLServer 命令行工具的标记,并作为最终分隔符将一批命令发送到 SQL Server。
在您的代码中,您需要复制此行为。
使用 GO 作为分隔符将脚本分成子部分。
使用单个命令(用于 ALTER TABLE)发送每个部分,并将 SqlDataAdapter 用于 SELECT 部分。
此外,您应该从脚本部分中删除 COMMIT 和 BEGIN TRANSACTION,并在您的代码中使用来自 SqlConnection 的 SqlTransaction 对象。

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2021-06-25
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多