2016-03-03 107 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

相关问题