ホームページ >バックエンド開発 >C++ >.NET で「ExecuteNonQuery」を実行すると「接続プロパティが初期化されていません」というエラーがスローされるのはなぜですか?

.NET で「ExecuteNonQuery」を実行すると「接続プロパティが初期化されていません」というエラーがスローされるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-05 15:54:40751ブラウズ

Why Does `ExecuteNonQuery` Throw a

ExecuteNonQuery: 接続プロパティが初期化されていません

問題

開発者は、.NET プログラムの実行中に「ExecuteNonQuery: 接続プロパティ」によりエラーが発生しました初期化されていません」というメッセージ。

コードサンプル

次のコード サンプルは、この問題を示しています。

using System.Data.SqlClient;

namespace Test
{
    class Program
    {
        static void Main()
        {
            SqlConnection connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ");

            connection.Open();  // Connection is not assigned to the command
            cmd.ExecuteNonQuery();
            connection.Close();
        }
    }
}

解決策

この問題を解決するには、SqlCommand の接続プロパティを割り当てる必要があります。これは、コマンドの作成時に行うことも、後でプロパティを設定することによっても行うことができます。

コマンド作成時の割り当て

SqlCommand cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ", connection);

後でプロパティを設定する

cmd.Connection = connection;

ステートメントの推奨事項の使用

オブジェクトの場合SqlConnection などの IDisposable を実装する場合は、using ステートメントを使用することをお勧めします。接続は自動的に閉じられ、例外が処理されます。

using (var connection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"))
using (var cmd = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "))
{
    cmd.Connection = connection;
    // Connection is automatically closed when leaving the using block
}

接続管理の最適化

パフォーマンスを最適化するために、foreach ループ内のエントリごとに新しい接続とデータ アダプターを作成する必要はありません。 。 ADO.NET は接続を自動的に管理し、接続プーリングを使用します。

以上が.NET で「ExecuteNonQuery」を実行すると「接続プロパティが初期化されていません」というエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。