Musíte přiřadit připojení k SqlCommand
, můžete použít konstruktor nebo vlastnost:
cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ");
cmd.InsertCommand.Connection = connection1;
Důrazně doporučuji použít using-statement
pro jakýkoli typ implementující IDisposable
jako SqlConnection
, také to uzavře spojení:
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
}
Kromě toho nemusíte vytvářet nové připojení a DataAdapter
pro každý záznam v foreach
, i když vytvoření, otevření a uzavření připojení ne znamená, že ADO.NET vytvoří, otevře a zavře fyzické připojení, ale pouze hledá dostupné připojení ve fondu připojení. Nicméně je to zbytečná režie.