Java derby sql整数查询

时间:2014-02-06 13:23:25

标签: java sql

请查看下面的我的代码段。我想要实现的是查询数据库中是否有与用户输入相同的结果。它正在查询SDS_NUMBER列,它是一个整数列。

当我执行查询时,它返回以下异常:

  

java.sql.SQLSyntaxErrorException:'INTEGER'和。之间的比较   'CHAR(UCS_BASIC)'不受支持。类型必须具有可比性。   字符串类型还必须具有匹配的排序规则......等等。

我明白这是说我试图将一个整数与char进行比较,但我试图从我在网上找到的例子中进行投射,但没有运气。我还尝试parseInt并在搜索中使用该值,但我仍然无法使其工作。请告诉我我做错了什么,请原谅我的新手。

     } else if (tmp == "sdsNumber") {
        try {
            Integer sdsNum = Integer.parseInt(val);
            String sql = "SELECT SDS_NUMBER, PRODUCT_NAME, PROPER_SHIPPING_NAME FROM APP.MASTER WHERE SDS_NUMBER = '"+sdsNum+"'";
            pst = conn.prepareStatement(sql);
            pst.executeQuery();
            jTable1.setModel(DbUtils.resultSetToTableModel(rs));

        } catch (Exception e) {
            e.printStackTrace(System.out);
            JOptionPane.showMessageDialog(null, e);

        }

创建主表:

CREATE TABLE MASTER
(
    id integer NOT NULL GENERATED ALWAYS AS (START WITH 1, INCREMENT BY 1)
,   SDS_NUMBER integer UNIQUE
,   PRODUCT_NAME varchar(100)
,   PRODUCT_DESCRIPTION varchar(500)
,   SDS_FILE_PATH varchar(50)
,   USE_STATUS BOOLEAN
,   DATA_UPDATED date
,   PROPER_SHIPPING_NAME varchar(100)
,   SIGNAL_WORD varchar(20)
,   CONSTRAINT MASTER_PRIMARY_KEY PRIMARY KEY (id)
);

3 个答案:

答案 0 :(得分:0)

删除单引号"'"+sdsNum+"'"为数字

她的ara示例使用preparedStatement

String sql = "SELECT SDS_NUMBER, PRODUCT_NAME, PROPER_SHIPPING_NAME FROM APP.MASTER WHERE SDS_NUMBER = ?";
pst = conn.prepareStatement(sql);
pst.setInt(1, sdsNum);
ResultSet rs = pst.executeQuery(sql);
while (rs.next()) {
    int SDS_NUMBER = rs.getInt("SDS_NUMBER");
    String PRODUCT_NAME= rs.getString("PRODUCT_NAME");
    ....

}

答案 1 :(得分:0)

似乎你用引号

包装整数
SDS_NUMBER = '"+sdsNum+"'"

可能你想要的是

SDS_NUMBER = ?

然后使用PreparedStatement设置数字而不是连接字符串

请参阅http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setInt%28int,%20int%29

答案 2 :(得分:0)

} else if ("sdsNumber".equals(tmp)) {

我改变第一行后,一切正常。我并不完全明白这有什么不同,如果有人可以对它有所启发,我会很感激,因为我正在慢慢地学习它。