2016-12-19 27 views
0

MySQL的未知專欄中,我有一個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" }); 
+2

它看起來像你對我都寫了MySqlClient的包裝?難道你只是打破完美的代碼,用錯誤的代碼替換它 – e4c5

+0

也在這裏留下一個空格前的值'string val =「VALUES」+「(」;' – Mihai

+0

一般來說,製作SQL和數據庫操作並不是那麼單調乏味。當你需要插入/更新Date,Int或Decimal時會發生什麼? – Plutonix

回答

1

你試圖實現的是非常糟糕的,不僅會導致錯誤,它還會將數據庫暴露給SQL注入。

只要忘記這個無用的功能,並使用香草ADO.NET與參數化查詢。

或者你可以隨時使用ORM如實體框架

1

你必須在你的價值觀的報價,這樣的:

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

此外,根據您的設置,您可能需要指定該數據庫:

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

間距b關鍵字之間的關鍵也很重要,確保你在預期的地方實現了空白,否則解釋器將無法理解你要做的事情。出於同樣的原因,當我們像人類一樣說話和寫作時,我們在每個說出的單詞之間停頓一下。

0

您應該正確引用所有查詢元素。

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