Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ExecuteNonQuery:Свойството на връзката не е инициализирано.

Трябва да зададете връзката към 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 ще създава, отваря и затваря физически връзка, но просто търси в пула за връзки за налична връзка. Независимо от това, това са излишни режийни разходи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете водещото празно пространство в SQL Server – LTRIM()

  2. Вземете всички дати между две дати в SQL Server

  3. Как да намерите елемент от списък на определена позиция в SQL Server

  4. Как работи FOR XML PATH('') при конкатенация на редове

  5. Как да игнорирате грешка при дублиран ключ в T-SQL (SQL сървър)