繁体   English   中英

使用sqljdbc4.jar从Eclipse到MSSQL服务器的JDBC连接

[英]JDBC connection from Eclipse to MSSQL server using sqljdbc4.jar

我正在尝试使用Eclipse Web项目中的sqljdbc4建立与MS SQL Server 2014的jdbc连接,没有任何运气。

到目前为止,这是我尝试过的:

  1. 在Web项目之外创建测试类,添加jar来构建路径并尝试建立连接-成功
  2. 将jar放置在项目的WEB-INF / lib下,添加jar来构建路径(有或没有为该项目添加Web应用程序库)并尝试建立连接-失败
  3. 将jar放置在中央Tomcat库下并尝试建立连接-失败

大多数论坛的用户都成功完成了上面列表中的数字(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;
    }
}

请检讨和帮助。

这是我的Web应用程序项目树

是的,将jar放在项目的WEB-INF / lib下应该可以解决问题,但是放置哪个jar同样重要。

由于您尚未使用Class.forName()加载类,因此我假设您正在使用JDBC 4.0(JAVA6 / 7)。 因此,您需要将jar sqljdbc4.jar放在该目录下。

您可以从这里下载。

我最终使用了Tomcat连接池,并且可以正常工作。 这是通过在META-INF下在Web内容下创建具有以下内容的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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM