次に、データベース接続を取得します
2.1要素1:ドライバーインターフェイス実装クラス
2.1.1ドライバーインターフェースの紹介
ドライブネットワークディスクアドレス:
-
java.sql.Driverインターフェースは、すべてのJDBCドライバーが実装する必要のあるインターフェースです。このインターフェイスはデータベースベンダーに提供されており、データベースベンダーによって実装方法が異なります。
-
プログラムでDriverインターフェースを実装するクラスに直接アクセスする必要はありませんが、ドライバーマネージャークラス(java.sql.DriverManager)がこれらのDriver実装を呼び出します。
- Oracle的驱动:oracle.jdbc.driver.OracleDriver
- MySqlドライバー:com.mysql.jdbc.Driver
-
ドライバーjarパッケージをJavaプロジェクトのディレクトリにコピーします。通常は、新しいlibフォルダーを作成します。
注:動的Webプロジェクト(動的Webプロジェクト)の場合、ドライバーjarをWebContent(一部の開発ツールはWebRootと呼ばれます)ディレクトリーのWEB-INFディレクトリーのlibディレクトリーに配置する必要があります。
2.1.2 JDBCドライバーのロードと登録
-
ドライバーのロード:JDBCドライバーをロードするには、クラスクラスの静的メソッドforName()を呼び出し、ロードするJDBCドライバーのクラス名を渡す必要があります。
- Class.forName(“ com.mysql.jdbc.Driver”);
-
ドライバーの登録:DriverManagerクラスは、ドライバー管理を担当するドライバーマネージャークラスです。
-
DriverManager.registerDriver(com.mysql.jdbc.Driver)を使用してドライバーを登録します
-
通常、明示的にドライバクラスドライバインターフェイスがあるため、クラス・ドライバ・インスタンスに登録するなregisterDriver DriverManagerクラス()メソッドを呼び出していないれているコードの静的ブロック、これに静的コードブロックが含まれ、にDriverManager.registerDriver()メソッドを呼び出し自身のインスタンスを登録します。次の図は、MySQLドライバー実装クラスのソースコードです。
-
2.2 要素二:URL
-
JDBC URLは、登録されたドライバーを識別するために使用されます。ドライバーマネージャーはこのURLを使用して、データベースへの接続を確立するための正しいドライバーを選択します。
-
JDBC URL標準は3つの部分で構成され、各部分はコロンで区切られています。
- jdbc:サブプロトコル:サブネーム
- プロトコル:JDBC URLのプロトコルは常にjdbcです。
- サブプロトコル:サブプロトコルは、データベースドライバーを識別するために使用されます。
- サブネーム:データベースを識別する方法。サブ名は、さまざまなサブプロトコルに従って変更できます。サブ名を使用する目的は、データベースを特定するための十分な情報を提供することです。ホスト名(サーバーのIPアドレスに対応)、ポート番号、データベース名が含まれます
-
例:
-
一般的に使用されるいくつかのデータベースのJDBC URL
-
MySQL接続URLの書き方:
- jdbc:mysql://ホスト名:mysqlサービスポート番号/データベース名?パラメータ=値&パラメータ=値
- jdbc:mysql:// localhost:3306 / xiaoran
- jdbc:mysql:// localhost:3306 / xiaoran ?useUnicode = true&characterEncoding = utf8(JDBCプログラムとサーバー側の文字セットが一致しない場合、文字化けが発生するため、パラメーターを介してサーバー側の文字セットを指定できます)
- jdbc:mysql:// localhost:3306 / xiaoran?user = root&password = 123456
-
Oracle 9iの接続URLの書き方:
- jdbc:oracle:thin:@host name:oracle service port number:database name
- jdbc:oracle:thin:@localhost:1521:xiaoran
-
SQLServer接続URLの書き込み方法:
-
jdbc:sqlserver://ホスト名:sqlserverサービスのポート番号:DatabaseName =データベース名
-
jdbc:sqlserver:// localhost:1433:DatabaseName = xiaoran
-
-
2.3要素3:ユーザー名とパスワード
- ユーザー、パスワードは、「属性名=属性値」でデータベースに通知できます
- DriverManagerクラスのgetConnection()メソッドを呼び出して、データベースへの接続を確立できます。
2.4データベース接続方法の例
2.4.1接続方法1
@Test
public void testConnection1() {
try {
//1.提供java.sql.Driver接口实现类的对象
Driver driver = null;
driver = new com.mysql.jdbc.Driver();
//2.提供url,指明具体操作的数据
String url = "jdbc:mysql://localhost:3306/school";
//3.提供Properties的对象,指明用户名和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "abc123");
//4.调用driver的connect(),获取连接
Connection conn = driver.connect(url, info);
System.out.println(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
注:サードパーティデータベースのAPIは、上記のコードに明示的に表示されます
2.4.2接続方法2
@Test
public void testConnection2() {
try {
//1.实例化Driver
String className = "com.mysql.jdbc.Driver";
Class clazz = Class.forName(className);
Driver driver = (Driver) clazz.newInstance();
//2.提供url,指明具体操作的数据
String url = "jdbc:mysql://localhost:3306/school";
//3.提供Properties的对象,指明用户名和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "abc123");
//4.调用driver的connect(),获取连接
Connection conn = driver.connect(url, info);
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
注:最初の方法と比較して、ドライバーは、サードパーティデータベースのAPIをコードに反映する代わりに、ドライバーをインスタンス化するために使用されます。インターフェイス指向プログラミングのアイデアを反映しています。
2.4.3接続モード3
@Test
public void testConnection3() {
try {
//1.数据库连接的4个基本要素:
String url = "jdbc:mysql://localhost:3306/school";
String user = "root";
String password = "abc123";
String driverName = "com.mysql.jdbc.Driver";
//2.实例化Driver
Class clazz = Class.forName(driverName);
Driver driver = (Driver) clazz.newInstance();
//3.注册驱动
DriverManager.registerDriver(driver);
//4.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
注:DriverManagerを使用してデータベースに接続します。
2.4.4接続方法4
@Test
public void testConnection4() {
try {
//1.数据库连接的4个基本要素:
String url = "jdbc:mysql://localhost:3306/school";
String user = "root";
String password = "abc123";
String driverName = "com.mysql.jdbc.Driver";
//2.加载驱动 (①实例化Driver ②注册驱动)
Class.forName(driverName);
/*
在mysql的Driver类中声明有这样的静态方法:
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
*/
//3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
注:ドライバーを明示的に登録する必要はありません。静的コードブロックはDriverクラスのソースコードに既に存在するため、ドライバーの登録が実現されます。
2.4.5接続モード5(最終バージョン)
@Test
public void testConnection5() throws Exception {
//1.加载配置文件
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
//2.读取配置文件
String url = pros.getProperty("url");
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String dirverClass = pros.getProperty("driverClass");
//3.加载驱动
Class.forName(dirverClass);
//4.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
このうち、構成ファイルはプロジェクトのsrcディレクトリで宣言されています:[jdbc.properties]
user=root
password=123456
url=jdbc:mysql://localhost:3306/school
driverClass=com.mysql.jdbc.Driver
説明:構成ファイルを使用して構成情報を保存し、構成ファイルをコードにロードします
構成ファイルを使用する利点:
①コードとデータの分離を実現し、構成情報の変更が必要な場合は、詳細コードなしで直接構成ファイルで変更
②構成情報を変更した場合、再コンパイルの工程を省略します。