gpt4 book ai didi

Java derby sql 整数查询

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:52 25 4
gpt4 key购买 nike

请看下面我的代码片段。我想要实现的是查询数据库以获取与用户输入相等的任何结果。它正在查询 SDS_NUMBER 列,这是一个整数列。

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

java.sql.SQLSyntaxErrorException: Comparisons between 'INTEGER' and 'CHAR (UCS_BASIC)' are not supported. Types must be comparable. String types must also have matching collation....etc.

我知道它是说我正在尝试将整数与字符进行比较,但我尝试从网上找到的示例进行转换,但没有运气。我还尝试了 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)
);

最佳答案

看来您正在将整数括在引号中

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

关于Java derby sql 整数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21604250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com