我想在准备好的声明和
中添加一个变量String Query = "SELECT count(*) count from apps.fnd_user fu where "
+ "UPPER(fu.user_name) like 'ADMIN_ ||:1||' ";
PreparedStatement stmt = conn.prepareStatement(Query);
stmt.setString(1, CompanyName);
但是这个错误正在显示。任何修复此错误.....我可以在准备声明时使用管道连接。
答案 0 :(得分:0)
Oracle CONCAT中有一个函数,试试这个:
like CONCAT('ADMIN_', ?);
当'ADMIN_ ||:1||'
与setString
一起使用时,它只是@Andreas在评论中已经提到的SQL文字,这是错误的语法。
除了我不确定:1
你是什么意思之外,我认为应该?
代替。
答案 1 :(得分:0)
不要在SQL中连接。用Java做:
String sql = "SELECT count(*) count" +
" FROM apps.fnd_user fu" +
" WHERE UPPER(fu.user_name) LIKE ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, "ADMIN_" + companyName);
try (ResultSet rs = stmt.executeQuery()) {
// code here
}
}
请注意:
?
,而非:1
如果您坚持在SQL中执行此操作,则语法为(使用Concatenation Operator):
" WHERE UPPER(fu.user_name) LIKE 'ADMIN_' || ?";
或(使用CONCAT()
function):
" WHERE UPPER(fu.user_name) LIKE CONCAT('ADMIN_', ?)";