SQL Server Java驱动程序无法在类路径中工作

时间:2016-11-11 03:19:47

标签: java sql-server jdbc

我编写了一个简单的Java文件来处理与SQL服务器集成的SQL。

我下载了相应的驱动程序并将JAR存储在正确的类路径中,但只有在我直接运行文件时它才有效。

我试过从另一个类调用sql类中的方法,我得到以下错误:

  

java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

我知道这个问题已有详细记载,但它并没有解决我的独特问题,即它在文件中有效但不在外部。

另一个问题是程序关闭后重建我的程序会忘记将JAR添加为库并要求我再次添加它,这是不好的。

我尝试通过手动复制并将其粘贴到XML配置文件中来添加类路径,但这是一个hacky解决方案,我宁愿正确地执行它。请让我知道我哪里出错了。

#include
    <CLASSES>
       <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/da08b8cce7bbf903602a25a3a163ae252435795/asm-5.0.4.jar!/" />
       <root url="jar://$USER_HOME$/IdeaProjects/r3prototypingCFS/contracts/src/main/kotlin/com/r3corda/protocols/sqljdbc42.jar!/" />
    </CLASSES>

1 个答案:

答案 0 :(得分:0)

使用jdts驱动程序..与Sql Server 2014一起使用。

的pom.xml

<dependencies>
    <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds -->
    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>1.3.1</version>
    </dependency>

</dependencies>

和src

import java.sql.*;

public class Main {

    public static void main(String[] args) throws SQLException {
    // write your code here
        Connection conn = null;
        ResultSet rs = null;
        String url = "jdbc:jtds:sqlserver://localhost:1433/DATABASENAME";
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        String userName = "username";
        String password = "yourpassword";
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, userName, password);
            System.out.println("Connected to the database!!! Getting table list...");
            Statement stmt = conn.createStatement();

            String sql = "SELECT top 10 PhoneNumber,RegistrationDate\n" +
                    "      \n" +
                    "  FROM tblProductRegistration";
           // ResultSet resultSet = stmt.executeQuery(sql);

          //  String selectSQL = "SELECT USER_ID, USERNAME FROM DBUSER WHERE USER_ID = ?";
            //Statement stmt = conn.createStatement();
            ResultSet resultSet = stmt.executeQuery(sql);
           // preparedStatement.setInt(1, 1001);
           // ResultSet resultSet = preparedStatement.executeQuery( );
            //STEP 5: Extract data from result set
            while(resultSet.next()){
                //Retrieve by column name
                String PhoneNumber  = resultSet.getString("PhoneNumber");
                String RegistrationDate  = resultSet.getString("RegistrationDate");


                //Display values
                System.out.print("PhoneNumber: " + PhoneNumber);
                System.out.print("RegistrationDate: " + RegistrationDate);

            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
            rs.close();
        }

    }
}