Странная проблема при вызове хранимой процедуры MySQL из C # - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть кнопка с событием клика:

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

При первом щелчке он без проблем заполняет dataGridView1 данными, полученными из хранимой процедуры «GetClient». Но когда я снова нажимаю кнопку, он возвращает счетчик 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 Ответ

1 голос
/ 19 сентября 2011

Солнце.

Я думаю, что вы ставите точки останова и проверяете поток, где именно происходит проблема. и даже я предлагаю вам сохранить commandType как хранимую процедуру

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

Я надеюсь, что ваш код работает с.

...