-1

我想在准备好的语句中添加一个变量,然后

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);  

但是这个错误正在显示。对此错误的任何修复.....我可以在准备语句时使用管道连接吗?

4

2 回答 2

0

Oracle CONCAT中有一个函数,试试这个:

like CONCAT('ADMIN_', ?);

当您使用它时'ADMIN_ ||:1||'setString它只是@Andreas 在评论中已经提到的 SQL 文字,这是错误的语法


除了我不确定你的意思是什么之外:1,我认为应该?改为。

于 2018-05-16T18:49:29.057 回答
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
    }
}

注意:

  • 参数标记 is ?, not:1
  • Java 变量名应以小写字母开头
  • 您应该使用 try-with-resources。

如果您坚持在 SQL 中执行此操作,则语法将是(使用连接运算符):

             " WHERE UPPER(fu.user_name) LIKE 'ADMIN_' || ?";

或者(使用CONCAT()函数):

             " WHERE UPPER(fu.user_name) LIKE CONCAT('ADMIN_', ?)";
于 2018-05-16T18:59:31.253 回答