Bạn cần gán kết nối cho SqlCommand
, bạn có thể sử dụng hàm tạo hoặc thuộc tính:
cmd.InsertCommand = new SqlCommand("INSERT INTO Application VALUES (@EventLog, @TimeGenerated, @EventType, @SourceName, @ComputerName, @InstanceId, @Message) ");
cmd.InsertCommand.Connection = connection1;
Tôi thực sự khuyên bạn nên sử dụng using-statement
cho bất kỳ loại nào triển khai IDisposable
như SqlConnection
, nó cũng sẽ đóng kết nối:
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
}
Ngoài ra, bạn không cần tạo kết nối mới và DataAdapter
cho mọi mục nhập trong foreach
, ngay cả khi việc tạo, mở và đóng kết nối không nghĩa là ADO.NET sẽ tạo, mở và đóng một vật lý kết nối nhưng chỉ cần nhìn vào nhóm kết nối để tìm kết nối khả dụng. Tuy nhiên, đó là một chi phí không cần thiết.