使用DB2,“statement.executeQuery()”仅在我的系统中抛出SqlEception

时间:2013-01-10 12:21:20

标签: db2 websphere-6.1

//Class UserProfileDBUtil.java

Connection conn = null;
PreparedStatement statment = null;
    ResultSet rs = null;
    try{
        String sqlString = "select count(*) from "+AGENCY_SCHEMA_NAME+".AGENCY         WHERE AGENCYCODE= ? and ENABLEDFLAG = ?";
        conn = JDBCUtils.getConnection(JDBCUtils.WP_ODS);
        statment = conn.prepareStatement(sqlString);
        statment.setString(1, agencyCode.toUpperCase());
        statment.setString(2, "Y");
        rs =statment.executeQuery();  // SQL Error Line 42
        while(rs.next())
        {
            if(rs.getInt(1) > 0 )
            {
                return true;
            }
        }
        log.error("Agency for agency code "+agencyCode+" is not available or not active");
    }

日志:

com.ibm.db2.jcc.b.SqlException:DB2 SQL错误:SQLCODE:-401,SQLSTATE:42818,SQLERRMC:=     在com.ibm.db2.jcc.b.sf.e(sf.java:1680)     在com.ibm.db2.jcc.b.sf.a(sf.java:1239)     在com.ibm.db2.jcc.c.jb.h(jb.java:139)     在com.ibm.db2.jcc.c.jb.a(jb.java:43)     在com.ibm.db2.jcc.c.w.a(w.java:30)     在com.ibm.db2.jcc.c.cc.g(cc.java:161)     在com.ibm.db2.jcc.b.sf.n(sf.java:1219)     在com.ibm.db2.jcc.b.tf.gb(tf.java:1818)     在com.ibm.db2.jcc.b.tf.d(tf.java:2294)     在com.ibm.db2.jcc.b.tf.X(tf.java:508)     在com.ibm.db2.jcc.b.tf.executeQuery(tf.java:491)     在com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery(WSJdbcPreparedStatement.java:559)     在UserProfileDBUtil.isAgencyActive(UserProfileDBUtil.java:42)

1 个答案:

答案 0 :(得分:1)

您收到的错误是-401which means

  

操作operator的操作数的数据类型不是   兼容或可比较。

我会检查并确保您传入的参数使用正确的数据类型。如果您捕获异常,则应该能够使用异常Message属性来查看operator的内容。 See here举个例子。