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

时间:2011-09-19 02:39:09

标签: c# mysql visual-studio stored-procedures mysql-connector

我有一个带有点击事件的按钮:

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

1 个答案:

答案 0 :(得分:1)

周日

我认为你提出了断点并检查了流程,究竟是什么问题发生了。甚至我建议你将commandType存储为存储过程

  MySqlCommand cm = new MySqlCommand("Your SP NAMe", con);
  cm.Parameters.AddWithValue("YourParameters","Value);
  cm.CommandType=CommandType.StoredProcedure ;

我希望你的代码可以使用。