QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1047|回复: 7

关于mysql-connector-3.0.14在问题!

[复制链接]
发表于 2007-2-15 14:10:43 | 显示全部楼层 |阅读模式
笔者在使用 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
其它字段均为字符,长度也够

请教高手!!!
 楼主| 发表于 2007-2-15 14:12:30 | 显示全部楼层
有没有人能解决内码问题
!!
mysql 版本为fc4 本身带的
rpm -q mysql
mysql-4.1.11-2
回复

使用道具 举报

 楼主| 发表于 2007-2-15 14:14:10 | 显示全部楼层
下面是我的my.cnf 配置
[mysqld]
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
[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
回复

使用道具 举报

 楼主| 发表于 2007-2-15 14:16:47 | 显示全部楼层
将这行去掉#
default-character-set=gbk
重新启动mysql
还是老样子
CLASSPATH中我已经加了mysql-connector-3.0.14-bin.jar

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

使用道具 举报

 楼主| 发表于 2007-2-15 14:18:58 | 显示全部楼层
版主呢
??
出来说说吗?
回复

使用道具 举报

 楼主| 发表于 2007-2-21 08:00:36 | 显示全部楼层
d
回复

使用道具 举报

发表于 2007-2-21 22:47:20 | 显示全部楼层
问错版了
回复

使用道具 举报

发表于 2007-2-21 23:21:56 | 显示全部楼层
需要先设定 codepage ,我记得是 SET NAMES="utf8" 一类的?
忘了,你 google 吧。从 mysql 4.1 开始,加入了国际多编码的支持,但也引入了这个问题。
旧版本给什么就是什么,现在不行了………………
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 00:18 , Processed in 0.069545 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表