繁体   English   中英

从C#调用MySQL存储过程时出现奇怪的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM