我是 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/