sql >> Databáze >  >> RDS >> Sqlserver

ExecuteNonQuery:Vlastnost připojení nebyla inicializována.

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.



  1. Ekvivalent RowID společnosti Oracle v MySQL

  2. Jak přidat záhlaví a zápatí do formuláře v aplikaci Access

  3. Jak mohu vybrat záznamy POUZE ze včerejška?

  4. Dotaz Můj výběr SUM vrátí hodnotu null. Mělo by vrátit 0