首頁 >後端開發 >C++ >為什麼 ExecuteNonQuery 失敗並顯示「連線未初始化」?

為什麼 ExecuteNonQuery 失敗並顯示「連線未初始化」?

Susan Sarandon
Susan Sarandon原創
2025-01-03 11:10:38130瀏覽

Why Does ExecuteNonQuery Fail with

無法執行非查詢:連線未初始化

嘗試使用下列指令執行查詢時會出現重複出現的問題ExecuteNonQuery:

ExecuteNonQuery: Connection property has not been initialized. 

說明

未分配SqlCommand 物件的 Connection 屬性時會出現此錯誤。 Connection 屬性在 SqlCommand 和資料庫之間建立連線。如果沒有建立連接,則無法執行 ExecuteNonQuery。

解決方案

要解決此問題,請將資料庫連線指派給SqlCommand 物件的Connection 屬性:

cmd.InsertCommand.Connection = connection1;

此外,建議對SqlConnection 等一次性資源使用using 語句。這種做法可確保正確的資源處置並處理連接關閉:

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) "))
        {
            // Assign connection
            insertCommand.Connection = connection1;
            
            // Set other properties...
            
            connection1.Open();
            // Execute query...
        }
    }
}

最佳化

要進一步最佳化效能,請避免為每次迭代建立多個連接和資料適配器環形。在循環外建立連接和資料適配器並在循環內重複使用它們。這減少了多次建立和關閉連線的開銷。

以上是為什麼 ExecuteNonQuery 失敗並顯示「連線未初始化」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn