qvb3d 发表于 2007-2-15 14:10:43

关于mysql-connector-3.0.14在问题!

笔者在使用 mysql-connector时,正常的Query 可以查出中文
程序如下
import java.sql.*;
public class mysqlqvb{   
    Connection con;
    Statement st;
    ResultSet rs;      
    public mysqlqvb(){      
      try{   
                        String name="com.mysql.jdbc.Driver";
                        String url="jdbc:mysql://localhost/qvb?user=root&password=xxx&useUnicode=true&characterEncoding=GBK";      
            Class.forName(name);
                con=DriverManager.getConnection(url);
                        System.out.println("连接成功!"+url);
         Statement st=con.createStatement();
         String sql="select * from teacher";
         ResultSet rs=st.executeQuery(sql);
         System.out.println("查询成功!"+sql);
         System.out.println("Id       Name       address       year");
         while(rs.next())
          {
          String id=rs.getString("id");
          id=new String(id.getBytes("ISO-8859-1"),"GB2312");
          System.out.print(id+"    ");   
          String na=rs.getString("name");
          na=new String(na.getBytes("ISO-8859-1"),"UTF-8");
          System.out.print(na+"       ");
          String addr=rs.getString("address");
         addr=new String(addr.getBytes("ISO-8859-1"),"UTF-8");
          System.out.print(addr+"      ");
          String ye=rs.getString("year");
          System.out.print(ye);
          System.out.print("\n");
          }         

                con.close();                        
      }catch(Exception e){
            e.printStackTrace();
      }
    }
   
    public static void main(String args[]){               
      mysqlqvb cms=new mysqlqvb();      
    }
   
}

但在使用插入数据的时候

import java.sql.*;
public class imy{   
    Connection con;
    Statement st;
    ResultSet rs;      
    public imy(){      
      try{   
                        String name="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost/qvb?user=root&password=xxx&useUnicode=true&characterEncoding=GBK";      
            Class.forName(name);
                con=DriverManager.getConnection(url);
                        System.out.println("连接成功!"+url);
         Statement st=con.createStatement();
         String sql="insert into teacher (name,address,year) values ('邹衍','吉林长岭','1980')";
         sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
         int rs=st.executeUpdate(sql);
         System.out.println("查询成功!"+sql);
         con.close();                        
      }catch(Exception e){
            e.printStackTrace();
      }
    }
   
    public static void main(String args[]){               
      imy cms=new imy();      
    }
   
}

所插入的中文全是????
其中id 为数字int
其它字段均为字符,长度也够

请教高手!!!

qvb3d 发表于 2007-2-15 14:12:30

有没有人能解决内码问题
!!
mysql 版本为fc4 本身带的
rpm -q mysql
mysql-4.1.11-2

qvb3d 发表于 2007-2-15 14:14:10

下面是我的my.cnf 配置

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
#old_passwords=1
#skip-name-resolve
#skip-grant-tables   
#default-character-set=gbk

user=mysql
basedir=/var/lib


err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

qvb3d 发表于 2007-2-15 14:16:47

将这行去掉#
default-character-set=gbk
重新启动mysql
还是老样子
CLASSPATH中我已经加了mysql-connector-3.0.14-bin.jar

高手呀
我快死了
两天了
没解决呢

qvb3d 发表于 2007-2-15 14:18:58

版主呢
??
出来说说吗?

qvb3d 发表于 2007-2-21 08:00:36

d :cry:

mandrakechina 发表于 2007-2-21 22:47:20

问错版了

jiangtao9999 发表于 2007-2-21 23:21:56

需要先设定 codepage ,我记得是 SET NAMES="utf8" 一类的?
忘了,你 google 吧。从 mysql 4.1 开始,加入了国际多编码的支持,但也引入了这个问题。
旧版本给什么就是什么,现在不行了………………
页: [1]
查看完整版本: 关于mysql-connector-3.0.14在问题!