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

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

Barbara Streisand
リリース: 2025-01-18 15:02:09
オリジナル
588 人が閲覧しました

How Can I Reliably Execute Multi-Line .SQL Script Files from C#?

C# での複数行の .SQL スクリプト ファイルの信頼性の高い実行

C# で SQL スクリプトを実行すると、データベース操作の自動化やデータベース オブジェクトの管理に役立ちます。この記事では、複数の SQL ステートメントを含む .SQL ファイルを実行するためのソリューションを検討し、その過程で発生するいくつかの課題に対処します。

この記事で提供されているコードは、ODP.NET と Process オブジェクトを使用して SQL ファイルを実行しようとしていますが、ExecuteNonQuery メソッドは複数行の SQL ステートメントを正しく処理しないことが多く、UseShellExecute の使用時に WaitForExit メソッドがハングする可能性があります。

ただし、C# の Microsoft.SqlServer.Management.Smo 名前空間を使用すると、より信頼性が高く完全なソリューションを実現できます。改良されたコード スニペットは次のとおりです:

<code class="language-csharp">using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.IO;
using System.Data.SqlClient;

public partial class ExcuteScript : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sqlConnectionString = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ccwebgrity;Data Source=SURAJIT\SQLEXPRESS";

        string script = File.ReadAllText(@"E:\Project Docs\MX462-PD\MX756_ModMappings1.sql");

        SqlConnection conn = new SqlConnection(sqlConnectionString);

        Server server = new Server(new ServerConnection(conn));

        server.ConnectionContext.ExecuteNonQuery(script);
    }
}</code>
ログイン後にコピー

このコード内:

  • まず、接続文字列を使用して SQL Server データベースへの接続を作成します。
  • 次に、SQL スクリプト ファイルを文字列に読み込みます。
  • Server クラスと ServerConnection クラスを使用して、SQL Server への接続を作成します。
  • 最後に、ServerConnection オブジェクトの ExecuteNonQuery メソッドを使用して SQL スクリプトを実行します。

この方法では、スクリプト ファイルから複数行の SQL ステートメントを正常に実行でき、SQL スクリプトのニーズに対してよりクリーンで強力なソリューションを提供できます。

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

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