2016-03-03 247 views
1

我對最新的MySQL .Net連接器有一個非常奇怪的問題。MySQL .Net連接器連接已打開但已關閉

以下代碼:

MySqlCommand cmd = new MySqlCommand("UPDATE tst SET col1 = 'Test' WHERE id = 5", conn); 

if (conn.State != ConnectionState.Open) 
{ 
    conn.Open(); 
} 

Console.WriteLine(conn.State.ToString()); 
try 
{ 
    cmd.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
    Console.WriteLine(conn.State.ToString()); 
} 

如果我跑我的PROGRAMM我會得到以下輸出/錯誤:

 
Open 
The connection must be valid and open 
Open 

這怎麼可能。你有什麼主意嗎?

+0

嘗試在執行之前聲明cmd。這可能是因爲conn在打開之前就被使用了。 (不確定) –

+0

如果您在創建命令之前調用'conn.Open',是否會發生同樣的問題? – Balah

+0

如果您還包含堆棧跟蹤,則會更好 – Bayeni

回答

0

在官方documentation對於MySqlDevArt,所有的MySqlCommand都是用打開的連接初始化的。我建議先打開連接,然後初始化MySqlCommand

if (!conn.State.Equals(ConnectionState.Open)) 
    conn.Open(); 

Console.WriteLine(conn.State.ToString()); 

MySqlCommand cmd = new MySqlCommand("UPDATE tst SET col1 = 'Test' WHERE id = 5", conn); 

try 
{ 
    cmd.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
    Console.WriteLine(conn.State.ToString()); 
} 
+0

感謝所有人,首先打開連接是正確的。 有趣的是,我在我的代碼中的許多位置使用了這個邏輯,並且在那裏它完美地工作。 – FirewireTT

相關問題