2013-05-03 81 views
0

我查詢MS Access數據庫,並得到以下錯誤:JavaFX的SQL查詢的數據類型不匹配(字符串)

值java.sql.SQLException:[微軟] [ODBC Microsoft Access驅動程序]數據類型不匹配的標準表達。

相關的代碼:

private SimpleStringProperty getProduct(String bc) { 
    Connection conn; 
    String dbDriver; 
    Statement st; 
    ResultSet rs; 
    SimpleStringProperty prod = new SimpleStringProperty(); 
    System.out.println("BC sent to db is: " + bc.toString()); 

    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     dbDriver = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};" 
       + "DBQ=Inventario.mdb;"; 
     conn = DriverManager.getConnection(dbDriver, "", ""); 
     st = conn.createStatement(); 
     String getProduct = "SELECT * FROM Articulos " 
       + "WHERE BarCode = " + bc; // .toString(); 

哪裏BC是從一個TextField盒作爲字符串獲得的參數,傳遞給此方法作爲字符串和在MS Access條形碼字段的類型是文本的。另外,我顯然正在使用一個條形碼,這是一個數字,但是我的一些條形碼有前導0,這就是爲什麼我把它作爲文本。有沒有辦法使用不同長度的條形碼和不同數量的重要前導零作爲文本/字符串之外的任何其他東西?正如你可以在我的代碼中看到的,我甚至試圖從JavaFX明確發送bc.toString()到MS Access,但我不斷收到數據類型不匹配錯誤。

最後說明:在各個點上,我放置了System.out.println()來查看正在傳遞的數據,並且在所有點上都顯示正確。我甚至拿出了標準條款,只是打印了我的結果集,並且所有正確的數據都從Access返回。

回答

1

我假設你querystate換貨是錯誤的... 你可以嘗試用sourround「

String getProduct = "SELECT * FROM Articulos " 
      + "WHERE BarCode = '" + bc+"'"; 

您的BC如果過度使用數據庫的我也試試這個教程http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

推薦你JPA。

+0

字符串字面...謝謝你...完美的答案。 – John 2013-05-03 21:45:35

相關問題