1
我们的团队最近开发了一个包含德比数据库的Web项目,然后发现一些错误:“长度”运算符不允许使用?参数作为操作数。“长度”操作符不允许将参数作为操作数
这是我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class test {
public static void main(String[] args) {
try {
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();//加载驱动
Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/mydb","user","123456");
String sql = "select * from TB_SYS_MODULE where length(?) > 5";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "fudengok");
ResultSet rs = ps.executeQuery();
while(rs.next()) {
System.out.println("MODULE_ID:"+rs.getString(1)+"-----MODULE_NAME:"+rs.getString(2));
}
} catch(Exception e){
e.printStackTrace();
}
}
}
找遍了官方文件,length()函数允许动态参数enter link description here。所以寻求帮助!
“fudengok”不是列的名称,它只是一个字符串上面.the代码仅仅是一个样品检测length()函数是允许你可以运行这个代码,并且你可能会得到类似于标题的错误 – user1733775
那么,你期望select语句做什么?返回TB_SYS_MODULE表中的所有行?他们都没有回来?只返回其中一些?如果您只想知道Java字符串是否超过5个字符,则不需要使用SQL;你可以在java.lang.String上使用length()方法。 –
是的,我们试着用这种方法得到String的长度,使用java.lang.String的length()方法,并将它作为动态参数放入sql中。现在,我只想知道LENGTH()函数允许动态参数或不。例如:select * from table_name where length(?)= n,这个sql可以成功运行吗? – user1733775