【问题标题】:Struggling to populate datagrid from stored procedure with parameters努力从带有参数的存储过程中填充数据网格
【发布时间】:2015-07-25 23:24:37
【问题描述】:
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。任何帮助将不胜感激。

【问题讨论】:

  • 您在哪一行收到此错误? city 的值是多少? get_alumni_by_city sp 的定义是什么?调试您的代码并告诉我们。
  • 表/存储过程中 varchar 字段的长度是多少?
  • 在 cmd.ExecuteNonQuery();
  • city的值为任意varchar(45),get_alumni_by_city为MySql中的存储过程。
  • 确保您没有传递无效字符,例如 uni 代码字符

标签: c# mysql parameters datagrid procedure


【解决方案1】:

你试过这个吗?

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

【讨论】:

    【解决方案2】:

    检查存储过程中@city 的类型。如果它与您输入的内容不匹配,它将拒绝它。

    【讨论】:

    • 都是varchar(45),奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多