......
String distination =request.getParameter("distination");
byte[] tmp = distination.getBytes("ISO-8859-1");
distination = new String(tmp,"GB2312");
.......
String SqlQue="select ad.addressName ,sw.sendName, wp.price from sendWay sw ,weighprice wp , address ad "+"where wp.ranDn <"+ taxweig + " and wp.ranUp >" + taxweig +" and ad.addressName = '"+ distination+"' and ad.addressid = sw.addressid and sw.sendid = wp.sendid";
rs = stmt.executeQuery(SqlQue);
我经过调试后发现导致rs为空的原因是where字段中条件ad.addressName = '"+ distination+"'不成立.我看了数据库表中的addressName字段值和distination的值都是"济南".如果我把"济南"都该为
"111",则rs不为空.这是什么原因呢?望指教!
String distination =request.getParameter("distination");
byte[] tmp = distination.getBytes("ISO-8859-1");
distination = new String(tmp,"GB2312");
.......
String SqlQue="select ad.addressName ,sw.sendName, wp.price from sendWay sw ,weighprice wp , address ad "+"where wp.ranDn <"+ taxweig + " and wp.ranUp >" + taxweig +" and ad.addressName = '"+ distination+"' and ad.addressid = sw.addressid and sw.sendid = wp.sendid";
rs = stmt.executeQuery(SqlQue);
我经过调试后发现导致rs为空的原因是where字段中条件ad.addressName = '"+ distination+"'不成立.我看了数据库表中的addressName字段值和distination的值都是"济南".如果我把"济南"都该为
"111",则rs不为空.这是什么原因呢?望指教!
String distination =request.getParameter("distination");
// byte[] tmp = distination.getBytes("ISO-8859-1");
// distination = new String(tmp,"GB2312");
.......
String SqlQue="select ad.addressName ,sw.sendName, wp.price from sendWay sw ,weighprice wp , address ad "+"where wp.ranDn <"+ taxweig + " and wp.ranUp >" + taxweig +" and ad.addressName = '"+ distination+"' and ad.addressid = sw.addressid and sw.sendid = wp.sendid";
rs = stmt.executeQuery(SqlQue);
byte[] tmp = distination.getBytes("ISO-8859-1");
distination = new String(tmp,"GB2312");
可以写成一条:String distination = new String(request.getParameter("distination").getBytes("ISO-8859-1"));
你再把这个distination打印到后台看看,我是觉得你的distination = new String(tmp,"GB2312");这条语句有点问题,你再试试.
// byte[] tmp = distination.getBytes("ISO-8859-1");
// distination = new String(tmp,"GB2312"); 我如果不进行编码转换,那么在页面上显示的是一串问号。
我从数据库中取出的中文如果不进行编码转换,显示时也是乱码。
不知道你在页面上面设置了<% page language="java" contentType="text/html;charset=gb2312" import="java.utio.*,java.sql.*"%>
你获取distination之后,打印一下,看是不是还是中文,
之后,你再在后台打印你执行的SqlQue是怎样的,放到SQL查询分析器中能不能执行,
这个打印放在ResultSet rs = stat.executeQuery(SqlQue);前面就行.
你把distination和SqlQue放到网上来,我看看是不是语句的问题.我要后台打印的结果.
byte[] tmp = distination.getBytes("ISO-8859-1");
distination = new String(tmp,"GB2312");
可以写成一条:String distination = new String(request.getParameter("distination").getBytes("ISO-8859-1"));
你再把这个distination打印到后台看看,我是觉得你的distination = new String(tmp,"GB2312");这条语句有点问题,你再试试. 正解
济南
select ad.addressName ,sw.sendName, wp.price from sendWay sw ,weighprice wp , address ad where wp.ranDn <668.0 and wp.ranUp >668.0 and ad.addressName = '济南' and ad.addressid = sw.addressid and sw.sendid = wp.sendid
在mysql中执行SqlQue语句后的结果:
mysql> select ad.addressName ,sw.sendName, wp.price from sendWay sw ,weighprice
wp , address ad where wp.ranDn <668.0 and wp.ranUp >668.0 and ad.addressName =
'济南' and ad.addressid = sw.addressid and sw.sendid = wp.sendid
-> ;
+-------------+----------+-------+
| addressName | sendName | price |
+-------------+----------+-------+
| 济南 | 经济价格 | 1.1 |
| 济南 | 一天到门 | 2.6 |
| 济南 | 两天到门 | 2.6 |
| 济南 | 三天到门 | 1.1 |
| 济南 | 四天到门 | 1.1 |
| 济南 | 五天到门 | 1.1 |
+-------------+----------+-------+
6 rows in set (0.17 sec)
rs = stmt.executeQuery(SqlQue);
你下面就可以把他读取出来.
String addressName = "";
....
if(rs.next())
{
while(rs.next())
{
addressName = rs.getString(1).trim();
.......
}
}
else
{
System.out.println("没有记录!");
}
你再看看代码,感觉应该不是你传值到数据库中查询的问题.感觉蛮有逻辑的,不是很复杂.
实在不行,你就在关键的地方加打印,看那条语句执行于否,这也是一个自己测试的方法.祝你好运.