再问连接到MS SQL SERVER数据库的问题

zawx 2004-09-19 01:32:54
使用struts框架时,数据库为sql server ,
已经配置jndi数据源,而且datasource也已经读到数据源,但无法创建链接,报错,如下
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Unsupported VM encoding MS936.)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
...
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported VM encoding MS936.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.setNonUnicodeTransliterator(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.setSQLCollation(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processEnvChange(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
... 33 more


...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zawx 2004-09-28
  • 打赏
  • 举报
回复
问题没解决,不过我想结了,谁以后要是知道的话告诉我一声。
zawx@tom.com
谢谢,
中秋快乐!
zawx 2004-09-22
  • 打赏
  • 举报
回复
知道的,给吭一声吧!!!
zawx 2004-09-20
  • 打赏
  • 举报
回复
楼上所说没有解决问题。
84175971 2004-09-19
  • 打赏
  • 举报
回复
哈哈…… ,对天狂笑……

你的JDBC驱动设置错了,请重新设置

将你的sql serve的JDBC驱动复制到你的c:\tomcat\common\lib目录下

设置你的sql serve的JDBC驱动classpath路径

哈哈…… ,对天狂笑……
redlaputa 2004-09-19
  • 打赏
  • 举报
回复
Unsupported VM encoding MS936.
编码错误
zawx 2004-09-19
  • 打赏
  • 举报
回复
我是在eclipse+tomcat环境下调试的,请问如何指定编码?
TinyJimmy 2004-09-19
  • 打赏
  • 举报
回复
运行是指定编码
java -Dfile.encoding=GBK 你的class
zawx 2004-09-19
  • 打赏
  • 举报
回复
JNDI配置如下:
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" debug="1" displayName="Struts Example Application" docBase="test" path="/test" reloadable="true" workDir="work\Catalina\localhost\test">
<Resource auth="Container" name="jdbc/test" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://SUBMARINE:1433;DatabaseName=Duwamish7</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
</ResourceParams>
</Context>

调用JNDI:
Context ctx = new InitialContext();
if (ctx == null)
throw new Exception("JNDI - No Context");
DataSource datasource =
(DataSource) ctx.lookup("java:comp/env/jdbc/test");
con = datasource.getConnection();

调试时,执行到datasource时,可以查看到JNDI已经读取,但生成Connection时,报错!

81,094

社区成员

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

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