【问题标题】:Weird problem when calling MySQL stored procedure from C#从 C# 调用 MySQL 存储过程时出现奇怪的问题
【发布时间】:2011-09-19 02:39:08
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    太阳。

    我认为您设置了断点并检查流程,确切地发生了问题。甚至我建议你将 commandType 存储为存储过程

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

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

    【讨论】:

    • Ravi,我之前试过你的方法,但没有运气。调试时,在奇数点击时,它在 count var 处返回数字,在偶数点击时,它在 count var 处返回 0,正如我所说。
    • 请分享您的 SP 代码和所有其他详细信息...以及另外一个建议 不要在查询中使用 select * from,使用您需要的列名。
    猜你喜欢
    • 2010-10-16
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多