| « | April 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:29 评论数量:19 留言数量:0 访问次数:119477 建立时间:2006年5月29日 |

| |
|
[java与中文]数据库中取存数据 软件技术
krf301 发表于 2007/4/21 20:35:28 |
|
今天遇到一个乱码问题,不知是什么原因,我向数据库中插入一条记录后,再取出,若是中文,得到的就是乱码,请大伙帮帮忙...------------------package w113.conn;import java.sql.*;public class UseExecuteUpdate {public static void main(String[] args) {String url = "jdbc:mysql://localhost/sql_test";String userName = "root";String passWord = "w113";String sql = null;try{Class.forName("com.mysql.jdbc.Driver");}catch(Exception e){e.printStackTrace();}try{Connection conn = DriverManager.getConnection(url,userName,passWord);Statement stmt = conn.createStatement();sql = "insert into student values('17','张三','hubei','2054-07-30')";int affectedRowCount = stmt.executeUpdate(sql);System.out.println("受插入操作影响的数据行数为:" + affectedRowCount);sql = "select * from student where stu_id = '17'";ResultSet rs = stmt.executeQuery(sql);while(rs.next()){String id = rs.getString(1);String name = rs.getString(2);String address = rs.getString(3);System.out.println(id + "" + name + "" +address);}}catch(Exception e){e.printStackTrace();}}}---------------------我看到的结果:受插入操作影响的数据行数为:117??hubei
nationally(自由鸟) 于 2005-10-26 17:09:38
存储和取出的时候都用String.getByte("iso8859-1")转换
w1113(文) 于 2005-10-26 17:59:30
请大哥把存储和取出时的几行代码帮我实现一下,谢谢了..
lcwlyl(网络幽灵) 于 2005-10-26 18:25:58
应该是编码的问题,试试把取出来的中文转码。
overgame(我菜我存在) 于 2005-10-26 19:08:30
取代码的时候转换下就是public String getString(String str){return new String(str, "GB2312"); }
pauliuyou(paul) 于 2005-10-27 10:59:03
存的时候用 s = new String(s.getBytes(),"ISO-8859-1");取的时候用 s = new String(s.getBytes("ISO-8859-1");
w1113(文) 于 2005-10-27 17:06:01
还是乱码啊,大哥能不能帮我把代码写具体一些?
keiy 于 2005-10-27 17:13:43
试试我的:import java.sql.*;public class mysqltest {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubString url = "jdbc:mysql://192.168.0.222/";// 主机名和端口 String login = "test";// 登录名 String password = "test";// 密码 try { Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection(url,login,password); //得到数据库驱动程序版本 DatabaseMetaData conMD = connection.getMetaData(); System.out.println("Driver Name:\t" + conMD.getDriverName()); System.out.println("Driver Version:\t" + conMD.getDriverVersion()); //选择数据库 connection.setCatalog( "jtest"); //创建Statement Statement st = connection.createStatement();//插数据String sql2=new String("INSERT INTO test VALUES('测试',20)".getBytes("GBK"),"ISO8859_1"); st.executeUpdate(sql2); //执行查询 ResultSet rs = st.executeQuery("SELECT * FROM test"); //取得结果,输出到屏幕 String x;while (rs.next()){ for(int j=1; j<=rs.getMetaData().getColumnCount(); j++){x=new String((rs.getString(j)).getBytes("ISO8859_1"),"GBK"); System.out.print( x+"\t"); } System.out.println(); } //关闭对象 st.close(); connection.close(); } catch(Exception e) { System.out.println("SQL Error:"+e.getMessage());} }} |
|
|