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が物理を作成、開閉することを意味します 接続しますが、接続プールを調べて利用可能な接続を探します。それにもかかわらず、それは不必要なオーバーヘッドです。