C# 难以用参数从存储过程填充datagrid

C# 难以用参数从存储过程填充datagrid,c#,mysql,parameters,datagrid,procedure,C#,Mysql,Parameters,Datagrid,Procedure,给出错误: “输入字符串的格式不正确” City是mysql服务器中的varchar。任何帮助都将不胜感激。请检查存储过程中@city的类型。如果它与你投的东西不匹配,它会拒绝它。你试过这个吗 protected DataTable RetrieveAlumni2() { { MySqlConnection con = new MySqlConnection("server=100.0.0.0;user id=id;pass

给出错误:

“输入字符串的格式不正确”


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

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

你试过这个吗

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

您在哪一行获得此错误?城市的价值是多少?城市获取校友的定义是什么?调试代码并告诉我们。表/存储过程中varchar字段的长度是多少?位于cmd.ExecuteNonQuery();city的值是任意varchar(45),get_Alumbers_by_city是MySql中的存储过程。请确保不要传递无效字符,例如uni-code字符都是varchar(45),这很奇怪。
cmd.Parameters.AddWithValue("@city","" + city + "");