l46*_*kok 9 java eclipse sql-server jdbc
我试图从Java连接到我的SQL Server 2008数据库,我从这个线程遇到了同样的问题.
String userName = "xxxx";
String password = "xxxx";
String url = "jdbc:sqlserver:xxx.xxx.xxx.xxx;databaseName=asdfzxcvqwer;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(url, userName, password);
Run Code Online (Sandbox Code Playgroud)
ClassNotFoundException每当我尝试从中加载驱动程序时,我都会一直得到Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at repositories.RepositoryBase.<init>(RepositoryBase.java:22)
at repositories.ProductsRepository.<init>(ProductsRepository.java:13)
at api.Products.init(Products.java:31)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我已确保将必要的jdbc和jtds驱动程序添加到库中,并且还设置了CLASSPATH.老实说,我不确定这里出了什么问题.
编辑:根据建议,我尝试下载这个jdbc jar并将其放在我的WEB-INF/lib中,然后将我的CLASSPATH变量设置为该位置.然而,同样的问题正在发生.
Edit2:没关系,完全重新安装Eclipse使它工作.这非常令人沮丧......
Har*_*hra 10
您不需要在类路径中同时使用jTDS和JDBC.任何一个都是必需的.在这里你只需要sqljdbc.jar.
另外,我建议将sqljdbc.jar物理位置/WEB-INF/lib放在项目目录中,而不是通过IDE将其添加到Classpath中.然后Tomcat会照顾其余部分.并尝试重启Tomcat.
您可以从以下网址下载Jar:www.java2s.com/Code/JarDownload/sqlserverjdbc/sqlserverjdbc.jar.zip
编辑:
在连接时提供用户名和密码,
您只需要jdbc:sqlserver://localhost:1433;databaseName=testSkip integratedSecurity属性.
小智 5
您正在查看类似的sqljdbc4.2版本:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Run Code Online (Sandbox Code Playgroud)
但是,对于sqljdbc4,版本声明应为:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Run Code Online (Sandbox Code Playgroud)
我认为,如果您更改第一个版本以编写正确的Class.forName,则您的应用程序将运行。
对我来说,一旦我改变它就起作用了
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Run Code Online (Sandbox Code Playgroud)
到:
在 POM 中
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
进而:
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
Run Code Online (Sandbox Code Playgroud)
...
DriverManager.registerDriver(SQLServerDriver());
Connection connection = DriverManager.getConnection(connectionUrl);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101765 次 |
| 最近记录: |