JDBC全稱為:Java Data Base Connectivity (java資料庫連接),主要用於java與資料庫的鏈接。 整個鏈接過程如下圖: 1.資料庫驅動:Driver 載入mysql驅動:Class.forName("com.mysql.jdbc.Driver"); 載入oracle驅 ...
JDBC全稱為:Java Data Base Connectivity (java資料庫連接),主要用於java與資料庫的鏈接。
整個鏈接過程如下圖:
1.資料庫驅動:Driver
載入mysql驅動:Class.forName("com.mysql.jdbc.Driver");
載入oracle驅動:Class.forName("oracle.jdbc.driver.OracleDriver");
載入相應的驅動需要導入相應的包,如MySQL則需要導入:mysql-connector-java-5.1.13-bin.jar
否則無法正常執行。
2.獲取資料庫鏈接:Connection
Connetion類主要用來鏈接資料庫,常通過DriverManager.getConnection()來獲取一個連接對象。
這裡有3個參數,分別是url,user,passwrod。對應的是要鏈接的資料庫,用戶名,密碼等。如:
url=jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8
user=root
password=root
3.執行sql語句:Statement
Statement對象用於執行sql語句,有以下3種:
(1)Statement對象用於執行不帶參數的簡單的SQL語句;
(2)PerparedStatement對象用於執行帶或不帶參數的預編譯SQL語句;
(3)CallableStatement對象用於執行對資料庫已存儲過程的調用;
Statement的常用方法:
(1)executeQuery()方法:運行查詢語句,返回ReaultSet對象。
(2)executeUpdata()方法:運行增,刪,改操作,返回更新的行數。
(3)addBatch(String sql) :把多條sql語句放到一個批處理中。
(4)executeBatch():向資料庫發送一批sql語句執行。
4.結果集:ResultSet
執行executeQuery()方法後返回的結果集
常用方法:
(1)getString(String columnName):獲得當前行的某一string類型的欄位
(2)getFloat(String columnName):獲得當前行的某一string類型的欄位
(3)getDate(String columnName):獲得當前行的某一date類型的欄位
(4)getBoolean(String columnName):獲得在當前行的某一Boolean類型的欄位
(5)getObject(String columnName):獲取當前行的某一任意類型的欄位
(6)next():移動到下一行
實際代碼
首先建立一個配置文件,內容如下:
#資料庫驅動 driver=com.mysql.jdbc.Driver #連接資料庫的URL url=jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8 #用戶名 user=root #密碼 password=root
接著寫一個連接資料庫的通用工具類:
public class DBUtil { private static String driver; private static String url; private static String user; private static String password; static{ try { //讀取配置文件 InputStream in = DBUtil.class.getResourceAsStream("db.properties"); Properties properties = new Properties(); //載入配置文件 properties.load(in); //獲取配置文件中的數據 driver = properties.getProperty("driver"); url = properties.getProperty("url"); user = properties.getProperty("user"); password = properties.getProperty("password"); //載入資料庫鏈接驅動 Class.forName(driver); } catch (Exception e) { e.printStackTrace(); } } /** * 獲取一個資料庫鏈接 */ public static Connection getConnection() throws SQLException{ return DriverManager.getConnection(url, user, password); } }
實現簡單的增刪改查:
public class jdbcTest { /** * 創建表 */ public static void createTable() throws SQLException{ String sql = "CREATE TABLE IF NOT EXISTS `user`(" +"`id` INT UNSIGNED AUTO_INCREMENT," +" `user_name` VARCHAR(100)," +" `user_password` VARCHAR(100)," +" `user_age` INT(11)," +"PRIMARY KEY ( `id` )" +")ENGINE=InnoDB DEFAULT CHARSET=utf8;"; Connection conn = DBUtil.getConnection(); //開啟事務 conn.setAutoCommit(false); PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.executeUpdate(); //提交事務 conn.commit(); //要註意關閉連接(在實際中最好不要像這樣關閉,最好標準一點) conn.close(); } /** * 增加數據 */ public static void add() throws SQLException{ String sql = "INSERT INTO USER (user_name,user_password,user_age) VALUES('老王','123456',18)"; Connection conn = DBUtil.getConnection(); conn.setAutoCommit(false); PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.executeUpdate(); conn.commit(); conn.close(); } /** * 刪除數據 */ public static void delete() throws SQLException{ String sql = "DELETE FROM USER WHERE USER.user_name = '老王'"; Connection conn = DBUtil.getConnection(); conn.setAutoCommit(false); PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.executeUpdate(); conn.commit(); conn.close(); } /** * 修改數據 */ public static void updata() throws SQLException{ String sql = "UPDATE USER SET USER.user_name = '老李'"; Connection conn = DBUtil.getConnection(); conn.setAutoCommit(false); PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.executeUpdate(); conn.commit(); conn.close(); } /** * 查找數據 */ public static void query() throws SQLException{ String sql = "SELECT * FROM USER"; Connection conn = DBUtil.getConnection(); conn.setAutoCommit(false); PreparedStatement preparedStatement = conn.prepareStatement(sql); //執行查詢語句並返回結果集 ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { //註意:這裡要與資料庫里的欄位對應 String username = resultSet.getString("user_name"); String password = resultSet.getString("user_password"); String age = resultSet.getString("user_age"); System.out.println(username + " " + password + " " + age); } conn.commit(); conn.close(); } }
這是我的文件結構:
註意要導入相應的包,大家需要自行下載MySQL的依賴包。