Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ExecuteNonQuery:Thuộc tính kết nối chưa được khởi tạo.

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đổi tên Tài khoản SA trong SQL Server (Ví dụ T-SQL)

  2. Lấy tất cả các tên bảng của một cơ sở dữ liệu cụ thể bằng truy vấn SQL?

  3. Real so với Floating Point so với Money

  4. Chỉ kích hoạt cập nhật SQL khi cột được sửa đổi

  5. Sử dụng SET TEXTSIZE để giới hạn dữ liệu được trả về cho mỗi hàng trong SQL Server