sql >> データベース >  >> RDS >> Sqlserver

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

    SqlCommandに接続を割り当てる必要があります 、コンストラクターまたはプロパティを使用できます:

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

    using-statementを使用することを強くお勧めします IDisposableを実装するすべてのタイプ SqlConnectionのように 、接続も閉じます:

    using(var connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"))
    using(var cmd = new SqlDataAdapter())
    using(var insertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) "))
    {
        insertCommand.Connection = connection1;
        cmd.InsertCommand = insertCommand;
        //.....
        connection1.Open();
        // .... you don't need to close the connection explicitely
    }
    

    それとは別に、新しい接続とDataAdapterを作成する必要はありません foreachのすべてのエントリに対して 、接続を作成、開閉してもしない ADO.NETが物理を作成、開閉することを意味します 接続しますが、接続プールを調べて利用可能な接続を探します。それにもかかわらず、それは不必要なオーバーヘッドです。



    1. MySQLは、あるデータベースから別のデータベースに挿入します

    2. C#のストアドプロシージャから戻り値を取得する

    3. OracleでCoalesce関数を使用する方法

    4. Oracleのすべてのテーブルのリストを取得しますか?