我正在尝试使用Eclipse Web项目中的sqljdbc4与MS SQL Server 2014建立jdbc连接, 没有任何运气。
这是我到目前为止所尝试的内容:
大多数论坛的用户都是通过上面列表中的数字(2)成功完成的。我刚刚开始使用JDBC,甚至需要一段时间才能进入这个阶段。 但遗憾的是,无法再进一步了。我现在停留了近7个小时,令人沮丧的是每次从常规的java项目中都能正常工作。 为什么这样,当IDE中的任何类型的项目要求jar在其类路径中时?
不确定这会有多大的帮助,但这是我想出的代码,试图建立连接。 并且它总是导致SQLException:在'try'之后的第一行没有为jdbc:sqlserver找到合适的驱动程序。
public class SQLConnector {
private static final String DB_SERVER = "jdbc:sqlserver://SAI;"
+ "DatabaseName=LibraryManagementSystem";
private static final String DB_USER="sa";
private static final String DB_PASS="abc732XYZ";
public static Connection getDatabaseConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(DB_SERVER, DB_USER, DB_PASS);
if(connection != null) {
System.out.println("Connection successful");
}
}
catch(SQLException e) {
e.printStackTrace();
}
return connection;
}
}
请审核并提供帮助。
答案 0 :(得分:1)
是将jar放在项目的WEB-INF / lib下应解决问题,但是你放置的jar同样重要。
由于您没有使用Class.forName()
加载类,我假设您使用的是JDBC 4.0(JAVA6 / 7)。所以你需要将jar sqljdbc4.jar
放在该目录下。
您可以从here下载。
答案 1 :(得分:1)
我最终使用Tomcat连接池并且它工作正常。这是通过在Web内容下的META-INF下创建一个Context.xml文件来完成的,其中包含以下内容。
<Context>
<!-- Specify a JDBC datasource -->
<Resource name="jdbc/LibraryManagementSystem" auth="Container"
type="javax.sql.DataSource" username="sa" password="abc732XYZ"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://SAI:1433;DatabaseName=LibraryManagementSystem"
maxActive="10" maxIdle="4" />
</Context>
并适当地更改连接器类以通过使用DataSource和Initial Context反映连接池。此外,建议使用连接池而不是使用普通的jdbc。
public class SQLConnector
{
private static final String DB_NAME = "jdbc/LibraryManagementSystem";
private static Connection connection;
public static Connection getDatabaseConnection() {
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource dataSource = (DataSource)envContext.lookup(DB_NAME);
connection = dataSource.getConnection();
}
catch (NamingException | SQLException e) {
e.printStackTrace();
}
return connection;
}
}