努力使用参数从存储过程填充datagrid

时间:2015-05-14 11:04:00

标签: c# mysql parameters datagrid procedure

protected DataTable RetrieveAlumni2()
        {
            {
                MySqlConnection con = new MySqlConnection("server=100.0.0.0;user id=id;password=pass;database=db;persistsecurityinfo=True");
                MySqlCommand cmd = new MySqlCommand("get_alumni_by_city", con);
                MySqlDataAdapter da = new MySqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                try
                {
                    string city = textBox1.Text;
                    con.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@city", SqlDbType.VarChar).Value = city;
                    da.SelectCommand = cmd;
                    cmd.ExecuteNonQuery();
                    da.Fill(dt);
                    dataGridView1.DataSource = dt;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    cmd.Dispose();
                    con.Close();
                }
                return dt;
            }
        }

给出错误:

  

"输入字符串的格式不正确"

City是mysql服务器中的varchar。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

cmd.Parameters.AddWithValue("@city","" + city + "");

答案 1 :(得分:0)

检查存储过程中@city的类型。如果它与你的投掷不匹配,它将拒绝它。