ホームページ > バックエンド開発 > C++ > C# で複数のステートメントを含む .SQL スクリプト ファイルを実行するにはどうすればよいですか?

C# で複数のステートメントを含む .SQL スクリプト ファイルを実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-18 15:12:10
オリジナル
473 人が閲覧しました

How Can I Execute an .SQL Script File with Multiple Statements in C#?

C# を使用して .SQL スクリプト ファイルを実行します

C# では、複数のステートメントを含む .SQL ファイルを実行するには、ODP.NET の ExecuteNonQuery メソッドに代わるメソッドが必要です。この記事では、このタスクを実行する 2 つの方法について説明します。

方法 1: SQL Server 管理オブジェクト (SMO) を使用する

  1. SqlConnection を使用してデータベース接続を確立します。
  2. 接続を使用してサーバー オブジェクトを初期化します。
  3. Server.ConnectionContext.ExecuteNonQuery(script) を使用してスクリプトを実行します。
<code class="language-csharp">using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.IO;
using System.Data.SqlClient;

SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
string script = File.ReadAllText(@"path/to/script.sql");
server.ConnectionContext.ExecuteNonQuery(script);</code>
ログイン後にコピー

*方法 2: SQLPlus**

を呼び出すプロセスを生成する
  1. Process オブジェクトを作成し、UseShellExecute を false に設定します。
  2. 標準出力をリダイレクトして結果をキャプチャします。
  3. FileName プロパティを「sqlplus」に設定します。
  4. データベース認証情報とスクリプト パスを含むように Arguments プロパティを設定します。
  5. コンソール ウィンドウを非表示にするには、CreateNoWindow を true に設定します。
  6. プロセスが終了コード 1 を返した場合は、操作を再試行します。
<code class="language-csharp">Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;

bool started = p.Start();
while (p.HasExited == false)
{
    Application.DoEvents();
}

int exitCode = p.ExitCode;
if (exitCode != 0)
{
    ... // 错误处理
}</code>
ログイン後にコピー

以上がC# で複数のステートメントを含む .SQL スクリプト ファイルを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート