小弟遇到一个java中保存汉字到db2 的as/400问题,希望大家帮助以下?
我的程序是这样的:
ConnectionManager cm = new ConnectionManager();
String value = new String( "21312测试我们大家一起321331".getBytes("GBK"), "ISO8859-1" );String sql = "insert into TBL.TRPAPF (BLLCON, BLLNUM, BNKCOD, OPRDAT, RTNCDE, TXBNUM, TXUNUM) values ('"+value+"', '00010028', '03', 20060809, 'T', '05', '5858')";
try {
           cm.exeSQL(sql, cm.getStatement(cm.getAs400Connection()), 1);
} catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
其中exeSQL()如下,存在于ConnectionManager 中:
    /**
     * 数据库查询操作操作,并关闭
     * 
     * @param sql sql操作语句
     * @param stmt
     * @param operateType 操作类型:0--查询,1--修改,2--删除
     * @return ResultSet对象
     * @throws SQLException
     */
    public ResultSet exeSQL(String sql, Statement stmt, int operateType) throws SQLException {
        ResultSet rs = null;
        try {
            if (operateType == 0) {
                rs = stmt.executeQuery(sql);
            } else {
                stmt.executeUpdate(sql);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            throw e;
        } finally {
            try {
                stmt.close();
                logger.debug("Statement关闭成功");
            } catch (SQLException e) {
                logger.error("Statement关闭异常", e);
                throw e;
            }
        }
        return rs;
    }
保存后在数据看不到汉字部分数据,数据可以看到,
若String value = ""21312测试我们大家一起321331";
则抛以下异常:
java.sql.SQLException: [SQL0330] Character conversion cannot be performed.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:367)
at com.ibm.as400.access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java:954)
at com.ibm.as400.access.AS400JDBCStatement.executeUpdate(AS400JDBCStatement.java:1388)我的数据库连接池是这样的,并且数据库连接正常:
URL:  jdbc:as400://192.168.15.200
Driver Classname: com.ibm.as400.access.AS400JDBCDriver
服务器: weblogic 8.5请各位大虾帮帮忙,xiexie :>,分不够好说,加!!!!!

解决方案 »

  1.   

    String value = new String( "21312测试我们大家一起321331".getBytes("GBK"), "ISO8859-1" );这个是我自己凭感觉的写的,现在我改写成:ps = con.prepareStatement("insert into TBL.TRPAPF (BLLCON, BLLNUM, BNKCOD, OPRDAT, RTNCDE, TXBNUM, TXUNUM) values (?,?,?,?,?,?,?)");
    ps.setString(1, "测试我们大家一起测试我们大家一起测试我们大家一起测试我们大家一起人名称");
               ps.setString(2, "00010028");
               ps.setString(3, "03");
               ps.setInt(4, 20060809);
               ps.setString(5, "W");
               ps.setString(6, "05");
               ps.setString(7, "6108");
               ps.executeUpdate();
    操作不报错,而且保存后汉字部分现在为:
    查询保存数据后还原不了原来的数据拉.狂晕狂晕狂晕狂晕狂晕狂晕狂晕狂晕
      

  2.   

    .呵呵 DB2没用过..帮LZ顶下