0

我正在查询 MS Access 数据库并收到以下错误:

java.sql.SQLException:[Microsoft][ODBC Microsoft Access Driver] 标准表达式中的数据类型不匹配。

相关代码:

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 中的 BarCode 字段是 Text 类型。

顺便说一句,我显然正在使用条形码,这是一个数字,但我的一些条形码有前导 0,这就是我将它作为文本的原因。有没有办法处理不同长度和不同数量的重要前导零的条形码作为文本/字符串以外的任何内容?正如您在我的代码中看到的,我什至尝试将 bc.toString() 从 JavaFX 显式发送到 MS Access,但我不断收到数据类型不匹配错误。

最后一点:在不同的点上,我放置了 System.out.println() 来查看正在传递的数据,并且在所有点上它看起来都是正确的。我什至取出了条件子句并打印了我的结果集,所有正确的数据都从 Access 中返回。

4

1 回答 1

1

我想你的查询语句是错误的......你可以尝试用'环绕你的 bc

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

试试这个教程http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

如果您过度使用数据库,我也建议您使用 JPA。

于 2013-05-03T20:39:01.133 回答