c# - 在 C# Visual Studio 中工作时 mysql 存储过程的问题

标签 c# mysql stored-procedures

我是 MySQL 的新手,现在我有一个必须使用 MYSQL 的项目。这是一个 win 应用程序,我在 Visual Studio 2010 上使用 C#。我尝试编写一个简单的存储过程,如下所示:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetBank`()
BEGIN
SELECT * FROM BANKNAME;
END

我的 C# 代码在这里:

private void btnShow_Click(object sender, EventArgs e)
{
  MySqlConnection con = new MySqlConnection("SERVER=localhost;DATABASE=dowacodb;UID=root;PASSWORD=123456");
  con.Open();
  DataTable dt = new DataTable();
  MySqlCommand cm = new MySqlCommand("GetBank", con);
  cm.CommandType = CommandType.StoredProcedure;
  MySqlDataAdapter da = new MySqlDataAdapter(cm);
  da.Fill(dt);
  con.Close();
  dataGridView1.DataSource = dt;
}

我的测试是点击按钮时在datagridview中显示数据。它在第一次点击时显示正常,但当我再次点击时,datagridview 中的数据消失了。下一次点击将再次重复显示数据。

但是当不使用存储过程时这段代码将是完美的

private void btnShow_Click(object sender, EventArgs e)
{
  MySqlConnection con = new MySqlConnection("SERVER=localhost;DATABASE=dowacodb;UID=root;PASSWORD=123456");
  con.Open();
  DataTable dt = new DataTable();
  MySqlCommand cm = new MySqlCommand("Select * from bankname", con);
  cm.CommandType = CommandType.Text;
  MySqlDataAdapter da = new MySqlDataAdapter(cm);
  da.Fill(dt);
  con.Close();
  dataGridView1.DataSource = dt;
}

那么 MySQL 有什么问题呢?提前致谢

最佳答案

在 MySQL 中调用过程的语法是

CALL GetBank()

所以

MySqlCommand cm = new MySqlCommand("CALL GetBank()", con);

应该这样做。这也消除了将命令 cm 指定为存储过程的需要。

关于c# - 在 C# Visual Studio 中工作时 mysql 存储过程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452437/

相关文章:

php - 如何从php存储过程调用以加载嵌套数据

MySQL临时变量赋值

c# - 为什么即使创建了显式运算符我也无法将源类型转换为字符串?

c# - 使用 Webclient 获取对 url 的请求会抛出异常,但如果在浏览器中打开它则工作正常

c# - 虽然循环使 Unity 崩溃,但不是无限的

mysql行顺序重新计算

mysql - 如何使用存储过程从多个数据输入返回两个日期之间的数据

c# - GridView 不订阅 CollectionChanged 事件

mysql - 嵌套 SELECT SQL 查询工作台

mysql - Mysql发现死锁