如何修复:找不到sqlserver:// localhost:1433; DatabaseName = XX的合适驱动程序

时间:2013-12-07 22:33:28

标签: java sql-server-2008

由于此数据库错误,我有一个巨大的Java项目无法运行

  

应用程序启动失败   找不到合适的驱动程序sqlserver:// localhost:1433; DatabaseName = XX   java.sql.SQLException:没有为sqlserver找到合适的驱动程序:// localhost:1433; DatabaseName = XX       在java.sql.DriverManager.getConnection(DriverManager.java:602)       在java.sql.DriverManager.getConnection(DriverManager.java:185)       at artemispm.serverutil.ConnectionPool.newConnection(ConnectionPool.java:577)       at artemispm.serverutil.ConnectionPool.manageConnections(ConnectionPool.java:470)       at artemispm.serverutil.ConnectionPool.getPooledConnection(ConnectionPool.java:421)       at artemispm.serverutil.ConnectionPool.getConnection(ConnectionPool.java:355)       at artemispm.serverutil.ConnectionPool.getConnection(ConnectionPool.java:329)       at artemispm.serverutil.AppMgr.getConnection(AppMgr.java:492)       at artemispm.trjdbc.TRJConnection。(TRJConnection.java:46)       at artemispm.trdo.TRBaseSql.getConnection(TRBaseSql.java:2903)       at artemispm.service.TRDebugWriter.transmit(TRDebugWriter.java:105)       at artemispm.trapplets.DataBroker.clockedTransmit(DataBroker.java:4969)       at artemispm.trapplets.DataBroker.callService(DataBroker.java:3125)       at artemispm.trapplets.DataBroker.callService(DataBroker.java:3103)       at artemispm.trapplets.DataBroker.initTriton(DataBroker.java:325)       at artemispm.trapplets.TRApplet.init(TRApplet.java:296)       在sun.applet.AppletPanel.run(AppletPanel.java:425)       在java.lang.Thread.run(Thread.java:662)

     

构建版本:?版本?   productpm.trdo.TRSeriousException:找不到适合sqlserver的驱动程序:// localhost:1433; DatabaseName = XX       at artemispm.trapplets.DataBroker.checkError(DataBroker.java:659)       at artemispm.trapplets.DataBroker.callService(DataBroker.java:3129)       at artemispm.trapplets.DataBroker.callService(DataBroker.java:3103)       at artemispm.trapplets.DataBroker.initTriton(DataBroker.java:325)       at artemispm.trapplets.TRApplet.init(TRApplet.java:296)       在sun.applet.AppletPanel.run(AppletPanel.java:425)       在java.lang.Thread.run(Thread.java:662)

我试着放置 sqljdbc.jar sqljdbc4.jar 在%catalina_home& \ lib文件夹中,但没有帮助

我不熟悉Java,但对此有任何帮助。

编辑: 我的连接字符串在customer.properties文件中定义,如下所示: APP.url = sqlserver:// localhost:1433; DatabaseName = XX

现在我将其更改为: APP.url = jdbc:sqlserver:// localhost:1433; DatabaseName = XX

我有新错误:

  

应用程序启动失败Java运行时环境(JRE)版本1.6   此驱动程序不支持。使用sqljdbc4.jar类库,   它提供了对JDBC 4.0的支持。

如何切换到新驱动程序?

4 个答案:

答案 0 :(得分:6)

您的网址应为jdbc:sqlserver://server:port;DatabaseName=dbname

你确定你输入的是正确的吗?

答案 1 :(得分:3)

我尝试了上述答案,但他们并没有帮助我。我不得不再尝试一下。

所以我尝试了别的东西。我复制了" sqljdbc4.jar"文件到" C:\ apache-tomcat-7.0.57 \ lib \"然后添加" sqljdbc4.jar"到我的项目的图书馆。它修复了一切。

我希望这可以帮助那些仍然遇到麻烦的人。

答案 2 :(得分:1)

来自sqljdbc_4.0文档(http://technet.microsoft.com/en-us/library/ms378526(v=sql.110).aspx):

使用sqljdbc.jar类库,应用程序必须首先注册驱动程序,如下所示: 的Class.forName(" com.microsoft.sqlserver.jdbc.SQLServerDriver&#34); 加载驱动程序后,可以使用连接URL和DriverManager类的getConnection方法建立连接:

调用DriverManager类的getConnection方法时,会从已注册的JDBC驱动程序集中找到相应的驱动程序。 sqljdbc4.jar文件包含" META-INF / services / java.sql.Driver" file,其中包含com.microsoft.sqlserver.jdbc.SQLServerDriver作为注册驱动程序。当前使用Class.forName方法加载驱动程序的现有应用程序将继续工作而无需修改。

答案 3 :(得分:0)

我将sqljdbc4.jar复制到Tomcat文件夹中的lib文件夹中,并且还将其也添加到了我的项目中。我仍然遇到相同的异常。最后,在大量搜寻之后,我发现错误是与Tomcat有关。

Tomcat尝试防止由于sql server驱动程序而导致的内存泄漏。为了克服该异常,需要禁用,以便它将自动加载驱动程序。

要禁用,请在Tomcat中更改server.xml并将“ JreMemoryLeakPreventionListener”标记为FALSE。

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false" />

这帮助我防止了以下异常,现在它可以正常工作。