【问题标题】:MySql unknown column in field list error字段列表错误中的MySql未知列
【发布时间】:2016-12-19 23:03:17
【问题描述】:

我有一个 mysql 未知列错误 1054。我无法在我的数据库表中插入 我的插入函数

    public void Insert(string tablename ,string[] values, string[] columns)
        {
            string col = "(";
            for (int x = 0; x < columns.Length; x++)
            {
                if (columns[x] == columns.Last())
                    col += columns[x];
                else
                if (columns.Length > 1)
                    col += columns[x] + ",";
            }
            col += ")";
            string val =  "VALUES"+"(";
            for (int x = 0; x < values.Length; x++)
            {
                if (values[x] == values.Last())
                    val += values[x];
                else
                if (values.Length > 1)
                    val += values[x] + ",";
            }
            val += ")";
            string query = "INSERT INTO "+ tablename + col + val ;

我的查询:从函数返回。

"INSERT INTO rezervationinformations(Fullname,Phone,Description)VALUES(dsa,cq,q)"

调用函数:

    db.Insert("rezervationinformations",  new string[] { textBox1.Text, textBox2.Text,
 textBox3.Text }, new string[] { "Fullname", "Phone", "Description" });

【问题讨论】:

  • 在我看来你是不是在为 MysqlClient 编写一个包装器?难道你只是在破坏完美的代码以用糟糕的代码替换它
  • 这里的值前也要留一个空格string val = "VALUES"+"(";
  • 制作 SQL 和 db Ops 并不是那么乏味。当您需要插入/更新 Date、Int 或 Decimal 时会发生什么?

标签: c# mysql sql-insert insert-update


【解决方案1】:

你想要达到的效果真的很糟糕,不仅会导致错误,还会让你的数据库暴露在 SQL 注入中。

忘记这个无用的函数,使用带有参数化查询的 vanilla ADO.NET。

或者你总是可以使用实体框架等 ORM

【讨论】:

    【解决方案2】:

    你需要在你的价值观周围加上引号,像这样:

    INSERT INTO rezervationinformations (Fullname,Phone,Description) VALUES ('dsa','cq','q') 
    

    另外,根据您的设置,您可能需要指定数据库:

    INSERT INTO mydatabasename.rezervationinformations (Fullname,Phone,Description) VALUES ('dsa','cq','q') 
    

    关键字之间的间距也很重要,请确保您在预期的位置实现空格,否则解释器将无法理解您告诉它做什么。出于同样的原因,当我们作为人类说话和写作时,我们会在我们说的每个单词之间停顿一下。

    【讨论】:

      【解决方案3】:

      您应该正确引用所有查询元素。

      INSERT INTO `databasename.rezervationinformations` ( `Fullname`, `Phone`, `Description` ) VALUES ( "dsa" ,"cq", "q" )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        • 2013-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多