字段列表中的MySql未知列错误

时间:2016-12-19 23:03:17

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

我有一个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" });

3 个答案:

答案 0 :(得分:2)

您要实现的目标非常糟糕,不仅会导致错误,而且还会使您的数据库暴露于SQL注入。

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

或者您始终可以使用ORM,例如Entity Framework

答案 1 :(得分:1)

您需要围绕您的值进行引用,例如:

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

此外,根据您的设置,您可能需要指定db:

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

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

答案 2 :(得分:0)

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

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