Musisz przypisać połączenie do SqlCommand
, możesz użyć konstruktora lub właściwości:
cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ");
cmd.InsertCommand.Connection = connection1;
Zdecydowanie polecam użycie using-statement
dla dowolnego typu implementującego IDisposable
jak SqlConnection
, spowoduje to również zamknięcie połączenia:
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
}
Poza tym nie musisz tworzyć nowego połączenia i DataAdapter
dla każdego wpisu w foreach
, nawet jeśli tworzenie, otwieranie i zamykanie połączenia nie oznaczają, że ADO.NET utworzy, otworzy i zamknie fizyczny połączenie, ale po prostu szuka dostępnego połączenia w puli połączeń. Niemniej jednak jest to niepotrzebne obciążenie.