2013-05-03 108 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

相关问题