[英]Weird problem when calling MySQL stored procedure from C#
我有一个带有click事件的按钮:
private void btnShow_Click(object sender, EventArgs e)
{
MySqlConnection con = new MySqlConnection("SERVER=localhost;DATABASE=airdb;UID=root;PASSWORD=123456");
con.Open();
DataTable dt = new DataTable();
MySqlCommand cm = new MySqlCommand("CALL GetClient()", con);
MySqlDataAdapter da = new MySqlDataAdapter(cm);
da.Fill(dt);
con.Close();
dataGridView1.DataSource = dt;
}
第一次单击时,它将使用存储过程“ GetClient”中检索的数据填充dataGridView1,而不会出现任何问题。 但是,当我再次单击该按钮时,它将从存储过程中返回计数0,并且dataGridView1上的所有数据都消失了。 第三次单击可以再次正常工作,第四次单击返回计数为0,第五次单击正常,第六次单击失败,...(类似于下一次单击)
但是当我将代码更改为:
DataTable dt = MySqlHelper.ExecuteDataset("SERVER=localhost;DATABASE=airdb;UID=root;PASSWORD=123456", "CALL GetClient()").Tables[0];
dataGridView1.DataSource = dt;
它在所有情况下都能正常工作。
所以我想知道第一个代码是否有什么问题。
存储过程: select * from Client
太阳。
我认为您放置了断点并检查流程,正是在此发生问题。 甚至我建议你将commandType存储为存储过程
MySqlCommand cm = new MySqlCommand("Your SP NAMe", con);
cm.Parameters.AddWithValue("YourParameters","Value);
cm.CommandType=CommandType.StoredProcedure ;
我希望您的代码可以使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.