2011-09-17 12 views
1

私はMySQLには新しく、今ではMYSQLで動作するはずのプロジェクトがあります。それは勝利のアプリケーションだと私はこのような単純なストアドプロシージャを作成しようとしたのVisual Studio 2010のC#を使用します。C#Visual Studioで作業しているときにmysqlストアドプロシージャに問題が発生しました

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のデータはなくなります。次のクリックでデータが繰り返し表示されます。

しかし、保存されて動作していないときに、このコードは完璧になりますがだから何がMySQLで間違っている

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; 
} 

をprocedured? MySQLでは、あなたのプロシージャを呼び出すための事前

答えて

0

この問題は解決されました。代わりに、MySQLとの対話する通常の方法を使用する:データテーブルを埋めるために、接続を開いて、コマンドを作成し、データアダプタを使用し、私はMySQLHelperクラスを使用して、それは私のために正常に動作します:

DataTable dt = MySqlHelper.ExecuteDataset("SERVER=localhost;DATABASE=dowacodb;UID=root;PASSWORD=123456", "call getbank()").Tables[0]; 
dataGridView1.DataSource = dt; 

しかし、今なぜだろうかこの方法は古い方法では機能しませんか?

0

構文のおかげでは、それを行う必要がありますので、

CALL GetBank() 

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

です。これにより、コマンドcmがストアドプロシージャであることを指定する必要性もなくなります。

+0

ありがとうございます!このソリューションは私も試したが、その結果はまだ同じだった – codentest

関連する問題