【问题标题】:Running multiline SQL query from C#从 C# 运行多行 SQL 查询
【发布时间】:2016-09-29 18:21:03
【问题描述】:

目前我正在运行这样的 SQL 查询:

SqlConnection conn = new SqlConnection(SQLCONNECTION);
var databases = new List<string>();

using (var comm = new SqlCommand(SQLQUERY, conn))
{
    conn.Open();

    using (var reader = comm.ExecuteReader())
    {
        while (reader.Read())
            databases.Add(reader.GetString(0));
    }
    conn.Close();
}

但现在我想运行这样的 SQL 查询(我已经在 SQL Server Management Studio 中测试过):

USE DATABASE
GO
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

如何通过我一直使用的 C# 方法运行这样的多行查询?

【问题讨论】:

  • 您可以将多个选择返回到 DataSet 中,它会在 for 循环中访问数据表,因此如果您有 4 个查询,例如,您可以以DataSet.Tables[I] 访问数据表,即DataSet.Tables[0], DataSet.Tables[1]....etc
  • 为什么不将连接字符串更改为指向所需的数据库?
  • 您可以在代码中使用存储过程而不是 SQL 字符串。

标签: c# sql


【解决方案1】:

您的 DATABASE 名称应该是连接字符串 (SQLCONNECTION) 的一部分,有关示例,请参见 www.connectionstrings.com

您可以构建一个System.Text.StringBuilder 以将行附加到SQLQUERY 字符串。尽管像这样在 C# 代码中构建 SQL 是不好的做法。也许您可以改为调用存储过程?

【讨论】:

    【解决方案2】:

    我从文件中将它读入字符串:

    string queryHolder = File.ReadAllText("FileNameGoesHere.txt");
    using (var comm = new SqlCommand(queryHolder, conn))
    

    这样你就不必重新编译代码,只需要在外部改变

    【讨论】:

    • GO 将失败,您可能需要解决这个问题。
    • 完美!用您自己的话说,先生..stackoverflow.com/questions/18596876/…
    • 我的理由是回答“多行查询”而不是“多行查询”。所有这些都是保持格式并创建简单的更改。
    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多