数据库编程——JDBC 配置
【0】README
1) 本文文字描述 轉自 core java volume 2 , 旨在理解 數據庫編程——JDBC 配置 的基礎知識 ;
2) update timestamp: 1602022101; 更新內容有: 上傳了一些圖片, 而且舉證說明了 為什么 jdbc.drivers=com.mysql.jdbc.Driver ? 和 為什么 jdbc.url=jdbc:mysql://localhost:3306/testCoreJava ?
3) for source code, please visit : https://github.com/pacosonTang/core-java-volume/tree/master/coreJavaAdvanced/chapter4/JDBCConfig
【1】數據庫URL
1)在連接數據庫時, 我們必須使用各種與數據庫類型相關的參數,如 主機名, 端口號, 數據庫名;
2)JDBC 使用了一種與普通URL 相類似的語法類描述數據源。 下面是這這種語法的兩個實例:
jdbc:derby://localhost:8080/corejava;create=true
jdbc:postgresql:corejava
3)JDBC URL 的一般語法為:
jdbc : subprotocol: other stuff
- 3.1)其中 subprotocol :用于選擇連接到 數據庫的具體驅動程序;
【2】驅動程序 JAR 文件
1)需要獲得包含了 所用數據庫的驅動程序的JAR文件;
2)在運行訪問數據庫的程序時, 需要將驅動程序的 JAR 文件包括到類路徑中;
3)在從 命令行啟動程序時,只需要使用下面的命令:
java -classpath .: driverPathProgramName
【3】注冊驅動器類
1)如果驅動程序JAR文件不支持自動注冊,那就需要找出數據庫提供商使用的JDBC 驅動器類的名字。典型的驅動器名字如下:
org.apache.derby.jdbc.ClientDriver
org.postgresql.Driver
2)通過使用 DriverManager, 可以使用兩種方式來注冊驅動器。
2.1)一種方式是在 java 程序中 加載驅動器類, 如:
Class.forName(“org.postgresql.Driver”);
2.2)方法二: 設置 jdbc.drivers 屬性。可以用命令行參數來指定這個屬性;
- 2.3)方法三:或者在應用中設置系統屬性:
System.setProperty("jdbc.drivers", "org.postgresql.Driver");
Attention) 在方法三中可以提供多個驅動器, 用冒號將他們分開, 如
org.postgresql.Driver:org.apache.derby.jdbc.ClientDriver;
【4】連接到數據庫
1)打開一個數據庫連接, 如:
String drivers = props.getProperty(“jdbc.drivers”);
if (drivers != null) System.setProperty(“jdbc.drivers”, drivers);
String url = props.getProperty(“jdbc.url”);
String username = props.getProperty(“jdbc.username”);
String password = props.getProperty(“jdbc.password”);
return DriverManager.getConnection(url, username, password); // 利用驅動管理器打開一個數據庫連接
2)驅動管理器(driver manager): 驅動管理器遍歷所有注冊過的驅動程序, 以便找到一個能夠使用 數據庫 URL 中指定的子協議的驅動程序;
3) 看個數據庫連接荔枝:
4) source code at a glance
package com.corejava.chapter4;import java.nio.file.*; import java.sql.*; import java.io.*; import java.util.*;public class TestDB {private static String cur_dir = System.getProperty("user.dir") + File.separator + "com" + File.separator + "corejava" + File.separator + "chapter4" + File.separator;public static void main(String args[]) throws IOException{try{runTest();}catch (SQLException ex){for (Throwable t : ex)t.printStackTrace();}}public static void runTest() throws SQLException, IOException{try (Connection conn = getConnection()){Statement stat = conn.createStatement();stat.executeUpdate("CREATE TABLE Greetings ("+ "Message CHAR(20))");stat.executeUpdate("INSERT INTO Greetings VALUES ('Hello, World!')");try (ResultSet result = stat.executeQuery("SELECT * FROM Greetings")){if (result.next())System.out.println(result.getString(1));}stat.executeUpdate("DROP TABLE Greetings");}}public static Connection getConnection() throws SQLException, IOException{Properties props = new Properties();try (InputStream in = Files.newInputStream(Paths.get(cur_dir + "database.properties"))){props.load(in); // 加載數據庫連接信息的 .properties 文件}String drivers = props.getProperty("jdbc.drivers"); //數據庫驅動器if (drivers != null) System.setProperty("jdbc.drivers", drivers);String url = props.getProperty("jdbc.url");String username = props.getProperty("jdbc.username");String password = props.getProperty("jdbc.password");return DriverManager.getConnection(url, username, password); //利用驅動管理器打開一個數據庫連接} } jdbc.drivers=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/testCoreJava jdbc.username=root jdbc.password=rootComplementary)
C1) 為什么 jdbc.drivers=com.mysql.jdbc.Driver ?
- 以上圖片轉自:https://dev.mysql.com/doc/connector-j/en/connector-j-installing-classpath.html
C2)為什么 jdbc.url=jdbc:mysql://localhost:3306/testCoreJava ?
(以上圖片轉自: Class DriverManager 的 API)
(以上圖片轉自: http://www.artima.com/javaseminars/modules/JDBC/)上面紅色標注區域的意思是說:
subprotocol == 驅動器或數據庫連接機制名稱;
subname == 識別數據庫的方式;
(以上圖片轉自: https://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-connect-drivermanager.html#connector-j-examples-connection-drivermanager)所以這些圖片 佐證了:
subprotocol == 驅動器或數據庫連接機制名稱 == mysql;
subname == 識別數據庫的方式 == 數據庫標識符==your database identifier;
總結
以上是生活随笔為你收集整理的数据库编程——JDBC 配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库编程——intro to JDBC
- 下一篇: gpd电脑系统恢复(保存恢复系统硬盘驱动