このプログラムを実行しようとすると、この例外が発生します。これは、Microsoftの例の1つです。プロジェクトプロパティを介して、コンパイルと実行の両方のために、netbeansのクラスパスにsqljdbc4.jarを追加しました。また、以下のimportステートメントを使用してクラスが見つかることもテストしました-コンパイル中にエラーが発生しないため、jarを見つける必要があります。
Sqldbc4.jarが参照するdllまたはsql dllに関連している可能性がありますか?
これは正確な例外であり、以下はパスワードを除く正確なコードです。
例外:
run:
Java.sql.SQLException: No suitable driver found for jdbc:Microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase
Error Trace in getConnection() : No suitable driver found for jdbc:Microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase
Error: No active Connection
at Java.sql.DriverManager.getConnection(DriverManager.Java:602)
at Java.sql.DriverManager.getConnection(DriverManager.Java:185)
at javaapplication1.Connect.getConnection(Connect.Java:35)
at javaapplication1.Connect.displayDbProperties(Connect.Java:50)
at javaapplication1.JavaApplication1.main(JavaApplication1.Java:23)
BUILD SUCCESSFUL (total time: 1 second)
コード:
package javaapplication1;
import com.Microsoft.sqlserver.jdbc.SQLServerDriver;
import Java.*;
public class Connect {
private Java.sql.Connection con = null;
private final String url = "jdbc:Microsoft:sqlserver://";
private final String serverName = "localhost";
private final String portNumber = "1433";
private final String databaseName = "HealthCareDatabase";
private final String userName = "larry";
private final String password = "xxxxxxx";
// Constructor
public Connect() {
}
private String getConnectionUrl() {
return url + serverName + ":" + portNumber + ";databaseName=" + databaseName ;
}
private Java.sql.Connection getConnection() {
try {
Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver");
con = Java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
if (con != null) {
System.out.println("Connection Successful!");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error Trace in getConnection() : " + e.getMessage());
}
return con;
}
public void displayDbProperties() {
Java.sql.DatabaseMetaData dm = null;
Java.sql.ResultSet rs = null;
try {
con = this.getConnection();
if (con != null) {
dm = con.getMetaData();
System.out.println("Driver Information");
System.out.println("\tDriver Name: " + dm.getDriverName());
System.out.println("\tDriver Version: " + dm.getDriverVersion());
System.out.println("\nDatabase Information ");
System.out.println("\tDatabase Name: " + dm.getDatabaseProductName());
System.out.println("\tDatabase Version: " + dm.getDatabaseProductVersion());
System.out.println("Avalilable Catalogs ");
rs = dm.getCatalogs();
while (rs.next()) {
System.out.println("\tcatalog: " + rs.getString(1));
}
rs.close();
rs = null;
closeConnection();
} else {
System.out.println("Error: No active Connection");
}
} catch (Exception e) {
e.printStackTrace();
}
dm = null;
}
private void closeConnection() {
try {
if (con != null) {
con.close();
}
con = null;
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
Connect myDbTest = new Connect();
myDbTest.displayDbProperties();
}
}
URLはjdbc:sqlserver://server:port;DatabaseName=dbname
である必要があります
クラス名はcom.Microsoft.sqlserver.jdbc.SQLServerDriver
のようにする必要があります
Use MicrosoftSQL Server JDBC Driver 2.
以下は、SQLデータベースから読み取る単純なコードです。データベース名は「database1」です。テーブル名は「table1」です。 2つの列「uname」と「pass」が含まれています。プロジェクトに「sqljdbc4.jar」を追加することを忘れないでください。 sqljdbc4.jarをダウンロード
public class NewClass {
public static void main(String[] args) {
Connection conn = null;
String dbName = "database1";
String serverip="192.168.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 = "admin";
String databasePassword = "root";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, databaseUserName, databasePassword);
stmt = conn.createStatement();
result = null;
String pa,us;
result = stmt.executeQuery("select * from table1 ");
while (result.next()) {
us=result.getString("uname");
pa = result.getString("pass");
System.out.println(us+" "+pa);
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
同じエラーが発生していましたが、適切な接続文字列がありました。私の問題は、ドライバーが使用されていなかったため、コンパイルされた戦争から最適化されたことでした。
必ずドライバーをインポートしてください:
import com.Microsoft.sqlserver.jdbc.SQLServerDriver;
そして、最終戦争にそれを強制するために、次のようなことができます:
Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver");
その行は元の質問にあります。これも機能します:
SQLServerDriver driver = new SQLServerDriver();
Sqljdbc4-2.0.jarで以下のように試すことができます。
public void getConnection() throws ClassNotFoundException, SQLException, IllegalAccessException, InstantiationException {
Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url = "jdbc:sqlserver://<SERVER_IP>:<PORT_NO>;databaseName=" + DATABASE_NAME;
Connection conn = DriverManager.getConnection(url, USERNAME, PASSWORD);
System.out.println("DB Connection started");
Statement sta = conn.createStatement();
String Sql = "select * from TABLE_NAME";
ResultSet rs = sta.executeQuery(Sql);
while (rs.next()) {
System.out.println(rs.getString("COLUMN_NAME"));
}
}
Mavenを使用して同じ問題を解決しようとしている人向け。 POMに以下の依存関係を追加します。
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.0.0.jre8</version>
</dependency>
接続には以下のコードを使用します:
String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=master;user=sa;password=your_password";
try {
System.out.print("Connecting to SQL Server ... ");
try (Connection connection = DriverManager.getConnection(connectionUrl)) {
System.out.println("Done.");
}
} catch (Exception e) {
System.out.println();
e.printStackTrace();
}
他のCRUDタイプのクエリについては、 this リンクを探してください。