4

Database.ExecuteNonQuery などを使用して SQL スクリプトを実行し、出力を取得したいと考えています。

例: xxx テーブルが作成されました

私のスクリプト:

        strArray = Regex.Split(streamReader.ReadToEnd(), "\r\nGO");
        if (connection.State == ConnectionState.Open)
        {
            System.Data.SqlClient.SqlCommand cmd;
            foreach (string sql in strArray)
            {
                cmd = new System.Data.SqlClient.SqlCommand(sql);
                cmd.Connection = connection;
                Console.WriteLine(sql);
                Console.WriteLine(cmd.ExecuteNonQuery().ToString());
            }
        }
4

2 に答える 2

10

私の理解が正しければ、SQL コマンドを発行することで得られる「情報メッセージ」を取得することを意味していると思います。私は試していませんが、「印刷ステートメント」の結果は同じように処理されると思います。その場合、SQL 接続オブジェクトに情報イベント ハンドラーを追加する必要があります。

これを行う方法を説明するこの記事を参照してください。

非常に単純です(スニペットは記事から取得しました)

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);
}
于 2013-11-12T20:32:17.740 に答える
2

ExecuteNonQueryint影響を受ける行数に基づいて を返し、UPDATE、 、DELETEおよびに使用されINSERTます。

MSDN のドキュメントを参照してください

SqlCommand.ExecuteNonQuery メソッド

あなたがしたいExecuteScalar

于 2013-11-12T20:17:02.280 に答える