我正在尝试从Java连接到我的SQL Server 2008数据库,并且从thread遇到同样的问题。
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);
我不断收到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)
我确保将必需的jdbc和jtds驱动程序添加到库中,并且还设置了CLASSPATH。老实说,我不确定这里出了什么问题。
编辑:根据建议,我尝试下载此jdbc jar并将其放在我的WEB-INF / lib中,然后将CLASSPATH变量设置到该位置。但是,同样的问题仍在发生。
Edit2:没关系,完全重新安装Eclipse使其可以工作。这真令人沮丧...
参考方案
您不需要在类路径中同时使用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=test
,跳过integratedSecurity
属性。
我收到以下错误:com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: …
Java:在PreparedStatement(JDBC)中将null传递为long - java我有一个变量是Long val = null; 而且我正在寻找一种将其传递给PreparedStatement语句对象的方法,以便将数据库中的字段值设置为null。statement.setLong(1,val); 它对Long无效,而对Long则无效。任何输入的想法或建议。谢谢 !!! 参考方案 您应该使用setNull method。statement.…
JDBC ResultSet总行 - java我正在我的应用程序中实现分页。为此,我运行查询并获取ResultSet。现在,我想获得此ResultSet中用于分页计算的记录总数。我怎么能得到这个?我不想执行额外的SQL,而这会给我总行数。 参考方案 另一个选择是将计数聚合添加为查询中的子查询列。如果您的数据库有点聪明,它将只执行一次。您应该能够使用自己喜欢的数据库中的查询分析器轻松地检查这一点。SELE…
Java BlackBerry-如何使用GET方法正确调用php脚本? - java大家好吗?我正在为BlackBerry Curve 8520做一个非常简单的游戏,我需要从服务器获取排名。为了获取此数据,Web程序员给了我php文件,该文件从数据库获取数据并将其作为动态xml文件返回。我的问题是:如何使用Java代码加载该php文件?如何将get参数传递给该请求?我如何解析从php脚本检索到的xml?提前致谢!弗朗西斯科 参考方案 您这里…
JDBC分页 - java我想使用JDBC实现分页。我想知道的实际事情是“如何分别从数据库中获取第1页和第2页的前50条记录,然后再获得50条记录”我的查询是Select * from data [数据表包含20,000行]对于第1页,我得到50条记录,对于第2页,我想获得下50条记录。如何在JDBC中有效地实现它?我搜索后发现rs.absolute(row)是跳过首页记录的方法,但…