说错了!说错了!
不是取不出来。而是取出来以后用
if (str1.compareTo("1")==0)
    str1="111";
out.println(str1);
比较,比较不生效。就是说数据库中数据明明是char型的“1”,但结果中输出的还是"1",不是"111"

解决方案 »

  1.   

    但是如果将数据库中数据类型从char改为varchar型则可以
      

  2.   

    if (str1.equals("1"))
        str1="111";
    out.println(str1);
      

  3.   

    equals我试过了,不行。java不承认rs.getString(char字段)获得的是string,所以用它的方法比较不生效。我就不知道如何转化了。
      

  4.   

    你把str1定义成String 型如下:
    String str1=rs.getString(char字段)
    if (str1.equals("1"))
        str1="111";
    out.println(str1);
      

  5.   

    我没有试过,但按以前编程经验,char类型是固定长度的,如果长度是2,存入"1"会变成"1 ",后以空格补齐。取出后去掉空格试一试。
      

  6.   

    String str1=rs.getString(1);  //1为char类型字段的索引号
    if(str1.compareTo("1")==0)
        str1="111";
    System.out.println(str1);我刚试过,没有问题。
      

  7.   

    这要从compareTo程序的源代码分析:
    如果Jsp设置字符集为"GBK",使用compareTo函数比较是没有问题的。但是如果
    字符集设置为"GB2312"再使用compareTo函数就会有问题。
      这是因为:
        compareTo实现是直接使用Char来进行比较的:
        char c1 = v1[k];
        char c2 = v2[k];
       当Java使用GB2312编码时,一个对汉字所获取到的Char值却是不规则的,即一个汉字在Java中作为一个char来处理(双字节字符)时,将这样的双字节字符进行强制转换成int类型时,所得到的不是包含了汉字编码顺序的中文内码。
      即采用"GB2312"的java的汉字char(两个byte)->int类型的转换会发生很大偏差。而失去了汉字原本在GBK规范当中,按内码排列好的顺序。
    而采用"GBK"的java汉字从一个汉字拆分成2个字节的byte[]时,所得到的值并没有打乱GBK编码规定的顺序。
      

  8.   

    你可以rs.getString("").trim();后在使用,因为char取出后要用空格
    补位的