连接 Microsoft SQL 和 Java?

Connect Microsoft SQL with Java?

我正在处理我的项目,我必须将 Microsoft SQL 与 Java 连接起来。我想从我的数据库中提取信息。我不断收到此错误:

 SEVERE: Java Runtime Environment (JRE) version 1.8 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.8 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:304)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1011)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at SendEmails.main(SendEmails.java:22)

我的驱动程序出了点问题。我想不通是什么。也许我有错误的路径或其他东西。这是我的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SendEmails {

    public static void main(String[] args) {

        Connection conn = null;
        String dbName = "Student";
        String serverip="109.45.100.100";
        String serverport="1433";
        String url = "jdbc:sqlserver://"+serverip+"\SQLEXPRESS:"+serverport+";databaseName="+dbName+"";
        Statement stmt = null;
        ResultSet result = null;
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String databaseUserName = "student";
        String databasePassword = "admin";
        try {
            Class.forName(driver).newInstance();
            conn = DriverManager.getConnection(url, databaseUserName, databasePassword);
            stmt = conn.createStatement();
            result = null;
            String pa,us;
            result = stmt.executeQuery("Select Top 45 * From Students ");

            while (result.next()) {
                us=result.getString("uname");
                pa = result.getString("pass");              
                System.out.println(us+"  "+pa);
            }

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

如果有人知道我的代码有什么问题,请告诉我。

您的 class 路径中缺少 jar 文件。

将 class 路径设置为 sqlserverjdbc.jar

其中包含 com.microsoft.jdbc.sqlserver.sqlserverdriver class.

首先检查你的jar文件是否包含com.microsoft.sqlserver.jdbc.SQLServerDrivercom.microsoft.jdbc.sqlserver.sqlserverdriverclass.

Check system requirements here

Both jdk 7 and jdk 8 compatible jar file

作为例外说“java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver"

所以要么所需的 jar 不存在,要么包含的 jar 的路径有问题。

https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx 下载 jar 并将此 jar 添加为依赖项。

这是一个工作示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ConnectMSSQLServer
{
   public void dbConnect(String db_connect_string,
            String db_userid,
            String db_password)
   {
      try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         Connection conn = DriverManager.getConnection(db_connect_string,
                  db_userid, db_password);
         System.out.println("connected");
         Statement statement = conn.createStatement();
         String queryString = "select * from sysobjects where type='u'";
         ResultSet rs = statement.executeQuery(queryString);
         while (rs.next()) {
            System.out.println(rs.getString(1));
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args)
   {
      ConnectMSSQLServer connServer = new ConnectMSSQLServer();
      connServer.dbConnect("jdbc:sqlserver://<hostname>", "<user>",
               "<password>");
   }
}

您添加了一个 .newInstance() 调用,但此示例中没有。将 <hostname><user><password> 替换为适当的值。

已添加参考资料

Download driver