2015-02-07 107 views
0

我正在使用netbeans和MS Access 2013.我寫了一個簡單的程序來將字符串變量的值存儲到數據庫中。數據庫名稱是users.accdb。
表:user1字段:uid類型:(短文本)MS access 2013 - java字符串

String name =「」; 嘗試{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 

Connection conn = DriverManager.getConnection("jdbc:odbc:Driver= 
{Microsoft Access Driver (*.mdb, *.accdb)}; 
Dbq=F:\\users.accdb"); 

Statement stmt = conn.createStatement(); 

stmt.execute("insert into user1(uid) values("+name+")"); 

conn.close(); stmt.close(); 
}catch(SQLException se){ 
         se.printStackTrace(); 
         } 
  1. 當我把與像在字符串變量名「弗蘭克」字母的任何字符串,它不存儲在數據庫中。

  2. 如果我在字符串變量中放置字符串如數字「123」,它將完全沒有任何錯誤地存儲。

  3. 如果我簡單地在查詢中提到一個字符串,它將被存儲。

當事情沒有存儲在數據庫中,我得到這個:[微軟] [ODBC Microsoft Access驅動程序]語法錯誤(缺少操作員)在查詢表達式「坦率」

有任何人都面臨着類似的東西這個..?

回答

0

您在插入語句中缺少引號。因此,而不是

insert into user1(uid) values("+name+")" 

使用

insert into user1(uid) values(\'"+name+"\')" 

您查詢是容易受到SQL注入。如果你想避免這種情況並擺脫上面缺少的引號,你應該使用PreparedStatement

+0

當我把報價放在你說的時候,一切都很好。這是一種新的語法嗎? ..我使用的語法似乎與MS Access 2010和07一起工作。請解釋。 – 2015-02-08 02:39:23

+0

沒有它沒有。你需要引用字符字段。 – SMA 2015-02-08 10:32:26