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