如何向数据库查询中文记录??

landc 2002-04-12 01:06:56
我使用的是mysql数据库
例如,
我向数据库中查询一个name=“李沙”
为什么总是找不到记录呢?

程序片断:
String uid=new String(request.getParameter("username").getBytes("ISO8859_1"),"gb2312");
……
PreparedStatement StatementrsUid = ConnrsUid.prepareStatement("SELECT * FROM user WHERE name='"+uid+"'");
ResultSet rsUid = StatementrsUid.executeQuery();
数据库中明明有这个“李沙”的记录
为什么总是返回一个空的ResultSet????
...全文
6 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
welcomegtm 2002-04-15
如果您完全用jdbc的话(第四种类型),建议您用javabean进行封装;在javabean中自己编写methold(iso-8859-1tobig5());
javabean:
sqlbridge()
coonpool()
如果您要原代码的话请和我联系:
方式如下:
(找木刻而要原代码)(通过csdn网)
回复
landc 2002-04-14
String uid=new String(request.getParameter("username").getBytes("ISO8859_1"),"gb2312");
我无意中改这句为String uid=new String(request.getParameter("username").getBytes("gb2312"),"ISO8859_1");反而成功了
为什么?
回复
CHARGING 2002-04-13
试试这个:
String str;
str="李沙";
byte[] byte1=str.getBytes();
String temp="";
try
{
temp=new String(byte1,"8859_1");
}
catch(Exception e)
{
}
sql1="select * from my_test_table where test_column='"+temp+"'";
rs=stmt.executeQuery(sql1);
回复
landc 2002-04-12
看错了,不用改,不过也是不能运行
回复
landc 2002-04-12
PreparedStatement StatementrsUid = ConnrsUid.prepareStatement(new String("SELECT* FROM user WHERE name='"+uid+"'".getBytes("gb2312"),"ISO8859_1"));
我改成了PreparedStatement StatementrsUid = ConnrsUid.prepareStatement(new String("SELECT
* FROM user WHERE name='"+uid+"'").getBytes("gb2312"),"ISO8859_1");
好像也不行
回复
landc 2002-04-12
好像不行?
Incompatible type for constructor. Can't convert
java.lang.String to byte[].
PreparedStatement StatementrsUid = ConnrsUid.prepareStatement(new String("SELECT
* FROM user WHERE name='"+uid+"'".getBytes("gb2312"),"ISO8859_1"));
请问 warmcat(:.:.:.:.:) 您这样做的思路是什么?
回复
warmcat 2002-04-12
试试:
PreparedStatement StatementrsUid = ConnrsUid.prepareStatement(new String("SELECT * FROM user WHERE name='"+uid+"'".getBytes("gb2312"),"ISO8859_1"));
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告