jdbc连接mysql在传输中文时会出现乱码问题,这其实是由于驱动时url没有设置好传输的变量所造成的,只需在url的最后添加"?useUnicode=true&characterEncoding=gbk"即可。如下有示例代码:(其中红色部分是需要增加的内容。)
package mysql_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DB{
static private Stringurl="jdbc:mysql://localhost:3306/LearnJSP?useUnicode=true&characterEncoding=gbk";
static private String dbuser="root";
static private String dbpwd="11068165";
public Connection getConnection(String url,String dbuser,Stringdbpwd){
Connectionconn=null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(url,dbuser,dbpwd);
}catch(Exception ex){
ex.printStackTrace();
System.out.println("连接失败");
}
returnconn;
}
public boolean verify(String user,String pwd){
Statementstmt=null;
ResultSetrs=null;
Connectionconn=null;
booleanIsExit=false;
try{
conn=getConnection(url,dbuser,dbpwd);
String sql="select * from UserInfo whereUserName='"+user+"'";
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
String pwd2=rs.getString(2);
if(pwd.equals(pwd2)){
IsExit=true;
break;
}
}
}catch(Exception ex){
ex.printStackTrace();
}
returnIsExit;
}
public static void main(String []args)throws Exception{
DB db=newDB();
Connectionconn=db.getConnection(DB.url,DB.dbuser,DB.dbpwd);
Statementstmt=conn.createStatement();
Stringsql="select * from UserInfo";
ResultSetrs=stmt.executeQuery(sql);
while(rs.next()){
String username=rs.getString(1);
System.out.println(newString(username.getBytes("ISO-8859-1"),"GB2312"));
System.out.println(rs.getString(2));
}
System.out.println(db.verify("wxn","123456"));
}
}