今天遇到一个乱码问题,不知是什么原因,我向数据库中插入一条记录后,再取出,若是中文,得到的就是乱码,请大伙帮帮忙...
------------------
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();
}
}
}
---------------------
我看到的结果:受插入操作影响的数据行数为:1
17 ?? hubei
------------------
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();
}
}
}
---------------------
我看到的结果:受插入操作影响的数据行数为:1
17 ?? hubei
用String.getByte("iso8859-1")转换
return new String(str, "GB2312");
}
取的时候用 s = new String(s.getBytes("ISO-8859-1");
import java.sql.*;public class mysqltest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String 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());
} }
}