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

时间:2014-07-26 14:07:53

标签: java sql-server eclipse jdbc

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

这是我到目前为止所尝试的内容:

  1. 在Web项目之外创建一个测试类,将jar添加到构建路径并尝试建立连接 - 成功
  2. 将jar放在项目的WEB-INF / lib下,添加jar以构建路径,无论是否为项目添加Web App Library并尝试建立连接 - 失败
  3. 将jar放在中央Tomcat lib下并尝试建立连接 - 失败
  4. 大多数论坛的用户都是通过上面列表中的数字(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;
        }
    }
    

    请审核并提供帮助。

    Here is my project tree for the Web application

2 个答案:

答案 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;
    }
}