JDBC
概念
- JDBC(Java Database Connectivity)Java數據庫連接
- JDBC提供了一組獨立于任何數據庫管理系統的API
- Java提供接口規范,由各個數據庫廠商提供接口的實現,廠商提供的實現類封裝成jar文件,也就是我們俗稱的數據庫驅動jar包
- JDBC充分體現了面向接口編程的好處,程序員只關心標準和規范,無需關注實現過程
核心組成
接口規范
- 為了項目代碼的可移植性,可維護性,SUN公司制訂了Java程序連接數據庫的統一接口規范,不管連接哪種DBMS軟件,Java代碼可以保持一致
- 接口存儲在java.sql和javax.sql包下
實現規范
- 各個數據庫廠商DBMS各不相同,各自內部如何通過SQL實現增、刪、改、查等操作管理數據,廠商最清楚,接口規范的實現由各個數據庫廠商自己實現
- 廠商將實現內容和過程封裝成jar文件,程序員只需在項目中引入jar文件,就可以進行開發了
搭建環境
- ①準備數據庫
-
//創建數據庫和表
create database jdbc;
use jdbc;
create table t_emp(emp_id int auto_increment comment ‘員工編號’ primary key,
emp_name varchar(100)not null comment’員工姓名’,
emp_salary double(10,5) not null comment’員工薪資’,
emp_age int not null comment ‘員工年齡’);
insert into t_emp(emp_name,emp_salary,emp_age) values(‘edison’,777.77,23),(‘dizzy’,888.88,24),(‘tye’,999.99,25),(‘water’,333.33,27);
```bash
mysql> use jdbc
Database changed
mysql> show tables;
+----------------+
| Tables_in_jdbc |
+----------------+
| t_emp |
+----------------+
1 row in set (0.00 sec)mysql> select * from t_emp-> ;
+--------+----------+------------+---------+
| emp_id | emp_name | emp_salary | emp_age |
+--------+----------+------------+---------+
| 1 | edison | 777.77000 | 23 |
| 2 | dizzy | 888.88000 | 24 |
| 3 | tye | 999.99000 | 25 |
| 4 | water | 333.33000 | 27 |
+--------+----------+------------+---------+
4 rows in set (0.00 sec)
- ②根據安裝數據庫版本官方下載驅動jar包
- ③創建Java項目,在項目下創建lib文件夾,將下載的驅動復制到lib文件夾
- ④選中lib文件夾,右鍵->Add as Libary,與項目集成
- ⑤編寫代碼
package com.lotus.base;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;/*** 基礎測試代碼*/
public class JDBCQuick {public static void main(String[] args) throws Exception {//1.注冊驅動Class.forName("com.mysql.cj.jdbc.Driver");//2.獲取連接對象String url = "jdbc:mysql://192.168.29.201:3306/jdbc";String username = "root";String password = "Lotus!1120";Connection conn = DriverManager.getConnection(url,username,password);//3.獲取執行SQL語句對象Statement statement = conn.createStatement();//4.編寫SQL語句并執行,接收返回結果集String statement_sql = "select * from jdbc.t_emp";ResultSet rs = statement.executeQuery(statement_sql);//5.處理結果,遍歷while (rs.next()) {int emp_id = rs.getInt("emp_id");String emp_name = rs.getString("emp_name");double emp_salary = rs.getDouble("emp_salary");int emp_age = rs.getInt("emp_age");System.out.println(emp_id + "\t" + emp_name + "\t" + emp_salary + "\t" + emp_age);}//6.釋放資源rs.close();statement.close();conn.close();}
}
//執行結果
1 edison 777.77 23
2 dizzy 888.88 24
3 tye 999.99 25
4 water 333.33 27