2015-06-27 39 views
0

我越來越MySQL的插入未知列字段列表

MySQLSyntaxErrorException:

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " + 
      "VALUES (`UUID` , " + " `TestName` , 8 , `Female` , `TestBios`)"; 

:在 '字段列表'

與此代碼未知列 'UUID'我已經創建了表格。

+0

「+」'TestName'這是什麼? – Bikku

回答

4

不要寫你的查詢以這種方式,它是不安全的(SQL注入),並可能慢了許多,然後下面的方法:

使用準備查詢語句與變量它:

String sql="INSERT INTO players (player_uuid , name , age , gender , bios) "+ 
" VALUES (?,?,?,?,?)"; 
PreparedStatement pstmt=connection.prepareStatement(sql); 
pstmt.setString(1,"UUID"); 
pstmt.setString(2,"TestName"); 
pstmt.setint(3,8); 
pstmt.setString(4,"Female"); 
pstmt.setString(5,"TestBios"); 
pstmt.execute(); 
pstmt.close(); 

該數據庫將緩存預處理語句的執行計劃,這樣可以節省時間,下一次同樣的語句中使用(幾乎不分值但某些數據庫將調整基於價值的計劃)。 使用插入件在大多數情況下節省的費用是最小的,選擇總節省量可能很大。

1

您需要將您的值放入引號以將它們視爲字符串。

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " + 
     "VALUES ('UUID' , " + " 'TestName' , 8 , 'Female' , 'TestBios')"; 

'char是爲esafaping列名保留的。

1

你打算像下面說的那樣。與singlequote取代那些backtique

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) 
VALUES ('UUID' ,'TestName' , 8 , 'Female' , 'TestBios')"; 
0

使用此代碼安裝您的代碼。由於您沒有在SQL查詢中使用單個cote作爲字符串值,因此發生錯誤。實際上最好的方法是使用PreparedStatement。

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " 
      + "VALUES ('UUID' , " + " 'TestName' , 8 , 'Female' , 'TestBios')"; 
相關問題