Java.sql.SQLException,而我尝试将值转换为准备好的语句
我想在准备好的语句中添加a变量,然后Java.sql.SQLException,而我尝试将值转换为准备好的语句,java,oracle,jdbc,oaf,Java,Oracle,Jdbc,Oaf,我想在准备好的语句中添加a变量,然后 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); 然而,这一错
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);
然而,这一错误正在显现。对这个错误的任何修正。。。。。在准备语句时是否可以使用管道进行连接。Oracle中有一个函数,请尝试以下操作:
like CONCAT('ADMIN_', ?);
当您将'ADMIN| | |:1 | |“
与setString
一起使用时,它只是@Andreas在注释中提到的SQL文本,这是错误的语法
除此之外,我不确定你所说的
:1
是什么意思,我认为应该改为?
。不要在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
- Java变量名称应以小写字母开头
- 您应该使用try with资源
异常通常会告诉您语句的错误。即使使用
?
,SQL文本'ADMIN|||?
也是SQL文本,因此?
不是参数标记'ADMIN| | |?
应该是正确的方法,而且|
是一个有效的Oracle运算符,因此CONCAT()
函数是不必要的。@Andreas它仍然是一个有效的函数和有效的解决方案,如果不是,你不应该在回答中提及它否?
" WHERE UPPER(fu.user_name) LIKE 'ADMIN_' || ?";
" WHERE UPPER(fu.user_name) LIKE CONCAT('ADMIN_', ?)";