資料庫的連線-JDBC-資料的增、刪、改、查
阿新 • • 發佈:2020-11-28
一、JDBC概述
1、定義
JDBC(Java DataBase Connectivity) Java 連線資料庫技術。 Java語言訪問各個資料庫的一套介面集合。可以連線 MySql Oracle、DB2 等
2、 結構
不同的資料庫 需要提供不同的資料庫連線驅動 , 該驅動由資料庫廠商提供,在連線之前匯入。
3、JDBC核心介面
JDBC連線程式中,sun提供核心介面 ,存在java.sql.* 和javax.sql.* 中
java.sql.* : 主要功能對資料庫基本程式設計操作,完成資料庫連線、執行sql語句,獲取結果等
javax.sql.* : 對資料庫的擴充套件操作 事務管理,行集合處理(RowSet)
核心介面:
- java.sql.Connection : 表示資料庫連線物件,獲取資料庫連線資訊,使用者名稱,資料庫版本等,建立於資料庫的連線會話。
- java.sql.Driver : 表示驅動類,需要在連線之前 載入該驅動類,繫結連線資料庫
- java.sql.DriverManager : 這是一個類, 用於管理驅動的類,可從中獲取連線物件。
- java.sql.Statement : sql執行介面, 主要用於執行sql語句(insert ,delete等) ,excute(sql語句)
- java.sql.PreparedStatement : 它屬於Statement的子介面, 也用於執行sql語句,預編譯的sql語句 ,可防止sql注入異常
- java.sql.ResultSet : 表示一個結果集類,用於返回sql語句查詢的結果。
4、Java連線資料庫的步驟
1、匯入資料庫連線Jar包
對於Mysql分不同版本 匯入的jar包不一樣
以8.0為例 :
2、載入啟動類
3、獲取連線物件Connection
4、獲取sql執行器 Statement
5、執行sql語句
6、關閉連線
// 1、匯入jar包, 一個專案(模組)只需要匯入一次 add to libs // 2、載入驅動類 Class.forName("com.mysql.cj.jdbc.Driver"); // 通過反射執行該類 // 3、通過驅動管理類獲取連線物件 引數語法 ?引數名=引數值&引數名=引數值 String url="jdbc:mysql://localhost:3306/j2008_db?useSSL=false&serverTimezone=UTC"; String username="root"; String password ="123456"; // 這是你自己設定的root密碼 Connection conn = DriverManager.getConnection(url,username,password); System.out.println("連線物件:"+conn); // **********************新增資料************************** //4、獲取sql執行器 Statement String sql="insert into dept values( 50,'市場部','武漢')"; Statement st = conn.createStatement(); // 5、執行SQL語句 int count = st.executeUpdate(sql); if(count>0){ System.out.println("新增成功"); }else{ System.out.println("新增失敗"); } //6、關閉連線 st.close(); conn.close();
// 刪除資料
/**
* 刪除部門
*/
public static void deleteDept(int deptno){
try {
//載入驅動
Class.forName("com.mysql.cj.jdbc.Driver");
// 獲取資料庫連線
//jdbc:mysql://localhost:3306/j2008_db?useSSL=false&serverTimezone=UTC&user=root&password=123456
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/j2008_db?useSSL=false&serverTimezone=UTC","root","123456");
//獲取sql執行器
Statement st = conn.createStatement();
//執行sql語句 executeUpdate
int count = st.executeUpdate("delete from dept where deptno =" +deptno);
//count 表示影響的行數
if(count>0){
System.out.println("刪除成功");
}else{
System.out.println("刪除失敗");
}
//關閉連線
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//修改資料
/**
* 修改部門 execute : 執行任意sql語句 (包括DDL DML)
*/
public static void updateDept(int deptno ,String loc){
Connection conn = null;
Statement st = null;
//獲取資料庫連線
String url= "jdbc:mysql://127.0.0.1:3306/j2008_db?useSSL=false&serverTimezone=UTC";
try {
//載入驅動
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url,"root","123456");
st = conn.createStatement();
// 執行任意sql語句 返回boolean ,對於select語句返回true 非select返回false
boolean flag = st.execute("update dept set loc = '"+loc+"' where deptno = " + deptno);
System.out.println("操作成功");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally{
// 關閉連線
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
注意: executeUpdate 和 execute、executeQuery的區別
1、executeUpdate() 用於執行insert update ,delete 語句,返回sql影響的行數
execute() : 用於執行任意sql語句,包括 建立表, 新增約束等 ,返回boolean型別, 對於select語句返回true ,對於其他語句返回 false
executeQuery() : 用於執行查詢sql語句, 它會返回一個 結果集物件 ResultSet ,獲取結果集資料。