代码的一部分,实现查找...请帮忙啊...if (e.getSource() == buttonSe) {
String seId = null; // 查询的行
seId = JOptionPane.showInputDialog(this, "请填写需要查询的数据");
System.out.println(seId); //测试用
try {
model.setDataVector(null, title); // 设置(替换)表格模型的内容,标题
sql = "select * from student where stuId like ? or stuName like ? or mathGrade like ? or chineseGrade like ? or englishGrade like ?";
pstm = conn.prepareStatement(sql);
pstm.setInt(1, Integer.valueOf(seId.trim()));
pstm.setString(2, "%" + seId.trim() + "%"); //就是这句,匹配不了中文,数字和英文都可以,是编
//码的问题吗,应该怎么改啊...
pstm.setInt(3, Integer.valueOf(seId.trim()));
pstm.setInt(4, Integer.valueOf(seId.trim()));
pstm.setInt(5, Integer.valueOf(seId.trim()));
rs = pstm.executeQuery();
while (rs.next()) { String st[] = { rs.getString("stuId"),
rs.getString("stuName"), rs.getString("mathGrade"),
rs.getString("chineseGrade"),
rs.getString("englishGrade") }; model.addRow(st);
}
}

解决方案 »

  1.   

    你可以把seId.trim()得到的字符串转换格式gb2312的
    或者是写一个过滤器来处理中文
      

  2.   

    ........我就是不知道 在java 中 怎么处理编码 才来问的啊...
      

  3.   

    java底层JRE中编码方式为Unicode双字节,因此你的中文在传递到数据库之前是UTF-8/UTF-16格式的,而数据库中文的编码主要是GBK或者GB2312.了解了这一点解决方法就不难了String.toByte()方法可以指定编码方式,同样new String(byte[]) 也可以指定编码方式用上面的方法基本可以实现编码转换了
      

  4.   

    感觉在java中弄中文很麻烦的说 能避免就避免
      

  5.   

    不懂 ....是加上这句吗?String seGId = new String(seId.getBytes("ISO-8859-1"), "GB2312");
    pstm.setString(2, "%" + seGId + "%"); // 字符串匹配一部分也可以我试了也不行啊...
      

  6.   

    .3...........饿 貌似不是编码的问题...可能是sql 语言的问题,不能查询字母的说..只能查询数字...sorry,没注意.. sql = "select * from student where stuName = ?";
    pstm=conn.prepareStatement(sql);
    pstm.setString(1,"小红");我用这3句可以查询到 stuName 为小红的行...
    @~我先自己研究下...
      

  7.   

    ...........还差一点  拜托谁速度回答了..很奇怪,逻辑问题吗??sql = "select * from student where stuName like ?";
    pstm=conn.prepareStatement(sql);
    pstm.setString(1,"%"+seId+"%");
    光这3句的话 可以查出中文 sql = "select * from student where stuId like ? or stuName like ? or mathGrade like ? or chineseGrade like ? or englishGrade like ?";
    pstm = conn.prepareStatement(sql);
    pstm.setInt(1, Integer.valueOf(seId.trim()));
    pstm.setString(2, "%" + seId + "%"); // 字符串匹配一部分也可以
    pstm.setInt(3, Integer.valueOf(seId.trim()));
    pstm.setInt(4, Integer.valueOf(seId.trim()));
    pstm.setInt(5, Integer.valueOf(seId.trim()));这几句的话就查不出中文了
      

  8.   

    你先输出一个 seId.trim()  看这个是不是乱码
      

  9.   

    修改tomcat 中的 server.xml文件
    <Connector port=”8080” protocol = “HTTP/1.1”
    MaxThreads = “150” ConnectionTimeout= “20000”
    Redirectport = “8443” URIEncoding = “GBK”/>
      

  10.   

    修改什么啊,这个明显提问的是J2SE的内容
    再说 JOptionPane这个,如果我没搞错,应该是swing的内容吧?跟tomcat有什么关系……查不出来的话,最好先确认下,是不是SQL写的不对
    先打印下最后生成的SQL,看看有没有乱码
    如果没乱码,再放到数据库里跑下,看是不是需要的结果
      

  11.   

    乱码有很多种的~~~
    看下你的数据库有没有问题,先看看数据库那里有没有乱码。
    如果还没有乱码的话,
    String seGId = new String(seId.getBytes("ISO-8859-1"), "GB2312"); 
    如果上面这个也不行,试下jdbc:mysql://localhost:3306/****?characterEncoding=gbk试下这个
      

  12.   

    还是13楼的问题...感觉不是编码问题........
    单独查询  sql = "select * from student where stuName like ?";可以
    这样
    sql = "select * from student where stuId like ? or stuName like ? or mathGrade like ? or chineseGrade like ? or englishGrade like ?"
    就不行,搞不懂...我用的是 access 这次...是不是 和mysql 有什么不同啊...
      

  13.   

    .................最后再顶次  搞不懂这次是在access 里建的数据库,在 mysql里 用sql 语句 查找类似的问题,可以查到
      

  14.   

       sql = "select * from student where stuId like ? or stuName like ? or mathGrade like ? or chineseGrade like ? or englishGrade like ?";
                    pstm = conn.prepareStatement(sql);
                    pstm.setInt(1, Integer.valueOf(seId.trim()));
                    pstm.setString(2, "%" + seId.trim() + "%"); //就是这句,匹配不了中文,数字和英文都可以,是编
    //码的问题吗,应该怎么改啊...
                    pstm.setInt(3, Integer.valueOf(seId.trim()));
                    pstm.setInt(4, Integer.valueOf(seId.trim()));
                    pstm.setInt(5, Integer.valueOf(seId.trim()));
    真牛逼,like通配符是做模糊查询时候用的,一般针对字符串的吧, 你传参的时候用 pstm.setInt 说明你的   stuId 、mathGrade   、chineseGrade 是number类型的吧,你用like没起作用,系统直接就是默认是等号,就是说  stuId like ? 其实就是 stuId =? 。你写的  pstm.setString(2, "%" + seId.trim() + "%"); //就是这句,匹配不了中文,数字和英文都可以,是编
    //码的问题吗,应该怎么改啊...
    呵呵,匹配不了中文是什么意思,seId要是中文你运行时就报错了,你把中文转换成Integer类型肯定会报错。
    可以改一下
    sql = "select * from student where to_char(stuId) like ? or stuName like ? or to_char(mathGrade) like ? or to_char(chineseGrade) like ? or to_char(englishGrade) like ?";
    传参数全部用pstm.setString应该就可以了
        
      

  15.   

    恩...access 里貌似没有to_Char 的函数....我在看看   明白怎么回事就好了``