【问题标题】:fatal error encountered during command execution mysql c#mysql c#执行命令时遇到致命错误
【发布时间】:2014-10-13 12:29:27
【问题描述】:

我在 C# 中使用 MySQL 时遇到问题。我想在我的 MySQL 数据库中搜索 4 个关键字,当我找到一个条目时,我的 WPF 程序将它显示在一个列表视图中,但我总是得到一个:

执行命令时遇到致命错误

这里是我的代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {

        string strName = name.Text;
        string strVorname = vorname.Text;
        string strPLZ = plz.Text;
        string strOrt = ort.Text;

        try
        {


            MySqlConnection con = new MySqlConnection(@"Server=xx.xxx.xxx.xx;Uid=user;Pwd=pw;Database=db;");
            con.Open();
            MySqlCommand cmd = new MySqlCommand("SELECT Name, Vorname, Plz, FROM TBCustomer WHERE Name LIKE @strName AND Vorname LIKE @strVorname AND Plz LIKE @strPLZ", con);

            cmd.Parameters.AddWithValue( "@Name", String.Format( "%{0}%", strName));
            cmd.Parameters.AddWithValue( "@Vorname", String.Format( "%{0}%", strVorname));
            cmd.Parameters.AddWithValue("@Plz", String.Format("%{0}%", strPLZ));

            using (var reader = cmd.ExecuteReader())
            {    
                while (reader.Read())//Lese alle Datensätze aus
                {
                    var getName = reader.GetString(reader.GetOrdinal("Name"));  // 'String aus der Spalte "Name" auslesen
                    MessageBox.Show(getName);                                                         
                }

            }



            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

【问题讨论】:

  • sql查询中的@Name在哪里??

标签: c# mysql wpf database fatal-error


【解决方案1】:

使用这个

MySqlCommand cmd = new MySqlCommand("SELECT Name, Vorname, Plz FROM TBCustomer WHERE Name LIKE @strName AND Vorname LIKE @strVorname AND Plz LIKE @strPlz", con);
cmd.Parameters.AddWithValue( "@strName", String.Format( "%{0}%", strName));
cmd.Parameters.AddWithValue( "@strVorname", String.Format( "%{0}%", strVorname));
cmd.Parameters.AddWithValue("@strPlz", String.Format("%{0}%", strPLZ));

注意:没有被' 包围的参数是正确的,因为它们被视为参数。

从查询中删除了 ,(在 Plz 之后)!这太疯狂了。

【讨论】:

  • 感谢它有效!但现在我有:“您的 SQL 语法有错误;请查看与您的 mysql 服务器版本相对应的手册,以在 'FROM TBCustomer WHERE Name LIKE %Test% AND Vorname LIKE %TEST 附近使用正确的语法
  • 好的,这与我的想法相反。尝试在周围添加单引号。
  • 好的,试试这个:cmd.Parameters.AddWithValue( "@strName", String.Format( "'%{0}%'", strName)); cmd.Parameters.AddWithValue( "@strVorname", String.Format( "'%{0}%'", strVorname)); cmd.Parameters.AddWithValue("@strPlz", String.Format("'%{0}%'", strPLZ))<--在提供参数的同时添加单引号。
  • 单引号不能在Select之前!它应该在参数值附近。这应该在提供值的同时完成,以便将参数标识为参数。
  • MySqlCommand cmd = new MySqlCommand("SELECT Name, Vorname, Plz, FROM TBCustomer WHERE Name LIKE '" + ATstrName +"' AND Vorname LIKE '"+ ATstrVorname + "' AND Plz LIKE '" + ATstrPLZ + "'", con); ……这是现在吗?所以我测试它,但又一样
【解决方案2】:

检查参数名称:您可以像这样更改您的 sn-p:

 MySqlCommand cmd = new MySqlCommand("SELECT Name, Vorname, Plz, FROM TBCustomer WHERE Name LIKE '@Name' AND Vorname LIKE '@Vorname' AND Plz LIKE '@Plz' ", con);

            cmd.Parameters.AddWithValue( "@Name", String.Format( "%{0}%", strName));
            cmd.Parameters.AddWithValue( "@Vorname", String.Format( "%{0}%", strVorname));
            cmd.Parameters.AddWithValue("@Plz", String.Format("%{0}%", strPLZ));

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多