1

我们团队最近开发了一个 derby 数据库的 web 项目,然后发现了一些错误:'length' 运算符不允许取 ? 参数作为操作数

这是我的代码:


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() 函数允许动态参数在此处输入链接描述。所以寻求帮助!

4

1 回答 1

0

我不确定我是否理解。“fudengok”是 TB_SYS_MODULE 表中列的名称吗?

如果是这样,为什么不直接使用:

select * from TB_SYS_MODULE where length(fudengok) > 5
于 2012-10-10T15:54:48.017 回答