我在建表的时候采用Navicat UTF—8编码,可是检索的时候怎么无论如何都检索不到结果?如果改成select * from hhh就可以检索到结果,库里肯定是有数据的,各位这个怎么解决,给点建议
public static void main(String[]args) {
String keyWord1="韩";
String keyWord="hhh";
try{
keyWord=new String(keyWord1.getBytes("gbk"),"gbk");
}catch(Exception e){
e.printStackTrace();
}
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passwd = "123456";
con = DriverManager.getConnection(url, user, passwd);
stmt = con.createStatement();
rs = stmt
.executeQuery("SELECT name FROM hhh WHERE name like '%"
+ keyWord1 + "%'");
while (rs.next()) {
System.out.print(rs.getString(1));
}
con.close();
stmt.close();
rs.close();
} catch (Exception e) {
System.out
.print("ERROR:............SELECT name FROM weibanju WHERE name like '%"
+ keyWord + "%'");
e.printStackTrace();
}
}
public static void main(String[]args) {
String keyWord1="韩";
String keyWord="hhh";
try{
keyWord=new String(keyWord1.getBytes("gbk"),"gbk");
}catch(Exception e){
e.printStackTrace();
}
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passwd = "123456";
con = DriverManager.getConnection(url, user, passwd);
stmt = con.createStatement();
rs = stmt
.executeQuery("SELECT name FROM hhh WHERE name like '%"
+ keyWord1 + "%'");
while (rs.next()) {
System.out.print(rs.getString(1));
}
con.close();
stmt.close();
rs.close();
} catch (Exception e) {
System.out
.print("ERROR:............SELECT name FROM weibanju WHERE name like '%"
+ keyWord + "%'");
e.printStackTrace();
}
}
解决方案 »
- session 和 连接
- eclipse构建路径是用的一个路径,怎么才能让他切实把jar放到lib文件夹下啊?
- 在线急等,成功加分,救命呀。。。。。。。。。。。。
- 如何避免Processing of multipart/form-data request failed. Read timed out
- 数据库连接池比较:
- 如何取出查询数据库返回的结果集???在线等
- 高分求教:tomcat启动后无法运行jsp,请问是何缘故?
- 请问做什么设置能让jsp在地址栏变成html呢?
- 一个很辣手的问题
- 求救!关于forward,小弟实在无法找出原因。一定给分
- JSP奇怪的问题,路过的朋友帮忙看看
- 从数据库中提取数据
keyWord=new String(keyWord1.getBytes("gbk"),"gbk");
你在后写sql语句的时候为什么还用keyword1那你上面写的转换是做什么的(最后没却没用)
executeQuery("SELECT name FROM hhh WHERE name like '%"
+ keyWord1 + "%'");
应该把keyWord1换成keyWord应该就可以了
+ keyWord1 + "%'"); keyWord1是什么编码?是否应该换成keyWord?你不是在有这么一行:keyWord=new String(keyWord1.getBytes("gbk"),"gbk");
new String(str.getBytes("GBK"), "UTF-8");
看可以不??
+ keyWord + "%'");
public static void main(String[]args) {
String keyWord1="韩";
String keyWord="";
try{
keyWord=new String(keyWord1.getBytes("gbk"),"gbk");
}catch(Exception e){
e.printStackTrace();
}
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passwd = "123456";
con = DriverManager.getConnection(url, user, passwd);
stmt = con.createStatement();
rs = stmt
.executeQuery("SELECT name FROM hhh WHERE name like '%"
+ keyWord+ "%'");
while (rs.next()) {
System.out.print(rs.getString(1));
}
con.close();
stmt.close();
rs.close();
} catch (Exception e) {
System.out
.print("ERROR:............SELECT name FROM weibanju WHERE name like '%"
+ keyWord + "%'");
e.printStackTrace();
}
}
}这是完整的,可是不能检索出结果为什么?我的表用的是gbk编码
不管编码对不对,起码数据时要有的,你没检索出来,说明你的查询条件有问题,把查询语句打印出来,拷贝到navicat里去执行以下
CREATE TABLE `hhh` (
`name` char(100) character set gbk default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
建议你改成varchar,或者在查询的时候,去空格
建议你改成varchar,或者在查询的时候,去空格