跪求大拿:ps.setString无法将sql语句中的?设置为参数。

foxplz 2018-08-15 03:49:52
进行sql拼接,setString这个方法一直都无法将问号设置为传进来的参数,打印sql也可以看到?。求各位大牛指点下小弟,万分感谢!!!


//入库卡条件查询
@Override
public int getCoCardCount(String quryInputDate, String quryInputDateTwo, String quryCardNo, String quryCardNoTwo,
String cardstate) {


int key =0;

List<String> params = new ArrayList<String>();
String sql = "SELECT count(*) FROM ( " +
"SELECT X.*, ROWNUM RN " +
" FROM (SELECT * FROM( " +
"select a.card_id,a.card_number,b.storage_time,c.dictionary_name" +
"from t_card a " +
"inner join t_storage b on a.card_incomeid=b.storage_id ";

if (quryInputDate != null && quryInputDateTwo != null && quryInputDate != "" && quryInputDateTwo != "") {

sql += " and storage_time between to_date(?,'yyyy-mm-dd') and to_date(?,'yyyy-mm-dd') ";
params.add(quryInputDate);
params.add(quryInputDateTwo);
}

sql+="inner join t_dictionary c on a.card_state=c.dictionary_desc and c.dictionary_type='卡状态' ";

if (cardstate != null && cardstate != "") {

sql += " and c.dictionary_name=? ";
params.add(cardstate);

}

if (quryCardNo != null && quryCardNoTwo != null && quryCardNo != "" && quryCardNoTwo != "") {

sql += " inner join t_card d on a.card_id=d.card_id where a.card_number between ? and ? ";
params.add(quryCardNo);
params.add(quryCardNoTwo);

}

sql+=") order by storage_time desc)X) ";


Connection conn = DbUtil.getDbUtil().getConn();
PreparedStatement pstmt = null;
ResultSet res = null;

try {
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < params.size(); i++) {

pstmt.setString(i + 1, params.get(i));

}

res = pstmt.executeQuery();
if (res.next()) {

key=res.getInt("count(*)");

}

} catch (SQLException e) {
e.printStackTrace();
} finally {
DbUtil.release(res, pstmt, conn);
}

return key;

}
...全文
306 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2018-08-15
  • 打赏
  • 举报
回复
String sql = "SELECT count(*) FROM ( " +
"SELECT X.*, ROWNUM RN " +
" FROM (
SELECT * FROM( " +
"select a.card_id,a.card_number,b.storage_time,c.dictionary_name" +
"from t_card a " +
"inner join t_storage b on a.card_incomeid=b.storage_id ";
改成:
String sql = "SELECT count(*) FROM ( " +
"select a.card_id,a.card_number,b.storage_time,c.dictionary_name" +
"from t_card a " +
"inner join t_storage b on a.card_incomeid=b.storage_id) ";

试试看
碧水幽幽泉 2018-08-15
  • 打赏
  • 举报
回复
String sql = "SELECT count(*) FROM ( " +
"SELECT X.*, ROWNUM RN " +
" FROM (
SELECT * FROM( " +
"select a.card_id,a.card_number,b.storage_time,c.dictionary_name" +
"from t_card a " +
"inner join t_storage b on a.card_incomeid=b.storage_id ";
改成:+
String sql = "SELECT count(*) FROM ( " +
"SELECT * FROM( " +
"select a.card_id,a.card_number,b.storage_time,c.dictionary_name" +
"from t_card a " +
"inner join t_storage b on a.card_incomeid=b.storage_id) ";

试试看
foxplz 2018-08-15
  • 打赏
  • 举报
回复
求助啊啊啊啊啊
foxplz 2018-08-15
  • 打赏
  • 举报
回复
java.sql.SQLException: ORA-00923: 未找到要求的 FROM 关键字 报错如图所示

17,081

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧