用MS的JDBC连SQLServer的中文查询问题

is_pasu 2004-04-13 12:34:55
驱动:
Microsoft SQL Server 2000 Driver for JDBC
Service Pack 1
Version 2.2.0029
December 2002

连接:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newIn

stance();
String url

="jdbc:microsoft:sqlserver://123.4.5.6:1433;DatabaseName=DBName;Use

r=;Password=" ;
conn= DriverManager.getConnection(url);

发现只要查询语句中出现了中文便会查询不到,如:
select * from DB where item ='中文'

同一查询语句在查询分析器中执行正常,把查询语句println出来也显示正常

,估计是Driver的中文支持问题,请问如何解决?
...全文
160 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
onefox 2004-04-21
  • 打赏
  • 举报
回复
要 JSQLConnect 驱动发邮件给我

ONE_Fox@163.com 标题:“求JSQLConnect驱动”(垃圾邮件太多 ^^; )
hui3zhihui 2004-04-13
  • 打赏
  • 举报
回复
进行编码转换
String item = new String(item.getBytes("gb2312"),"iso-8859-1");
yongfans 2004-04-13
  • 打赏
  • 举报
回复
有可能那你去微软网站下个新版的试试
yaomengqiushui 2004-04-13
  • 打赏
  • 举报
回复
可以进行一下中文编码转换。
onefox 2004-04-13
  • 打赏
  • 举报
回复
我用的是 JSQLConnect 驱动,

你试试直接打开数据库看看里面的内容是不是已经乱码了?
pxboy 2004-04-13
  • 打赏
  • 举报
回复
是用jsp吗?看看你的程序
is_pasu 2004-04-13
  • 打赏
  • 举报
回复
顶一下
is_pasu 2004-04-13
  • 打赏
  • 举报
回复
MS的驱动太不好用了,想换一个。

请问 onefox(一品狐) ,JSQLConnect驱动去那里找呢?谢谢。
is_pasu 2004-04-13
  • 打赏
  • 举报
回复
to:flywind63(紫色的偶然)
嗯,你这样连的话和我现在连MSSQL是一样的,但是MSSQL好像是默认是gb2312字符集的,这样取出来用rs。getString时就要像你上一贴那样转码了,我想,如果取出来就能指定是iso8859多好
flywind63 2004-04-13
  • 打赏
  • 举报
回复
不用指定连接时的characterEncoding,我连接的是直接用JDBC
private String databaseName = ""
ResultSet rs;
private String user = "";
private String password = "";
private String server = "";
private String driverstr="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String url;
private String name;

url="jdbc:microsoft:sqlserver://"+server+":1433;DatabaseName="+databaseName;
Class.forName(driverstr);
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatemen(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
//strqry为实际的SQL语句
rs = stmt.executeQuery(strqry);

is_pasu 2004-04-13
  • 打赏
  • 举报
回复
MSSQL数据库默认得字符集在那里查看?

事实上,我连另一个MySQL的数据库是能够正常操作中文的,但连MySQL时我在连接时指定了characterEncoding=8859_1,我查了MS的JDBC Driver文档,好像不能够像MySQL的JDBC那样指定encode,有什么解决办法?
is_pasu 2004-04-13
  • 打赏
  • 举报
回复
MSSQL数据库默认得字符集在那里查看?

事实上,我连MySQL数据库的话,在连接url里指定字符集为characterEncoding=8859_1是能够正常查询和显示中文的,但我查了MSSQL的JDBC Driver文档好像不能像MySQL的JDBC Driver那样指定字符集?怎么解决?

把那条SQL语句转码我试过不行的。
flywind63 2004-04-13
  • 打赏
  • 举报
回复
我的是这样解决的:
String str = new String((new String(rs.getString("bh")+"").trim()).getBytes("ISO-8859-1"),"GBK")
rs为Resultset结果集,bh为字段名称(编号)
CoolAbu 2004-04-13
  • 打赏
  • 举报
回复
你把你的select * from DB where item ='中文' sql语句像上面那样转码试试

你的MSSQL数据库默认得字符集是什么??
ecaol 2004-04-13
  • 打赏
  • 举报
回复
up
slash5437 2004-04-13
  • 打赏
  • 举报
回复
String str=new String(str.getBytes("gb2312"),"8859_1");
slash5437 2004-04-13
  • 打赏
  • 举报
回复
编码转换
String str=new String(str.getBytes("gb2312"),""8859_1);

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧