Tip
Idea自帶可視界面👉MySQL 圖形化界面-CSDN博客
Idea2022無add Framework support選項👉最新版IDEA:Add web Framework Support步驟/構建JavaWeb項目步驟_idea add framework support-CSDN博客
基本步驟
1.加載驅動包Driver
2.建立與數據庫的連接Connection DriverManager
3.發送SQL語句Statement
4.接收數據庫返回結果executeUpdate()/executeQuery()
5.解析結果ResultSet
6.關閉連接close()
加載驅動包Driver
package com.qf.JDBC;public class JdbcDriver {static {
// 1.加載驅動類try {
// 反射獲得驅動類DriverClass.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}
}
?創建和數據庫的連接
package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
// jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8 5
// jdbc:mysql://localhost:3306/student?serverTimezone=UTC 8private static String username="root";//自己的用戶名private static String pass="123456";//自己的密碼static {
// 1.加載驅動類try {
// 反射獲得驅動類Driver
// com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}// 2.獲取連接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("連接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}public static void main(String[] args) {getConn();}
}
發送Sql語句
例子:增加操作
package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Stack;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
// jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8 5
// jdbc:mysql://localhost:3306/student?serverTimezone=UTC 8private static String username="root";private static String pass="123456";static {
// 1.加載驅動類try {
// 反射獲得驅動類Driver
// com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}// 2.獲取連接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("連接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}// 增加同學public static void addDept(){String sql="insert into student.table values('zt','男',20)";
// 獲得連接try {Statement st= getConn().createStatement();st.executeUpdate(sql);} catch (SQLException e) {throw new RuntimeException(e);}}public static void main(String[] args) {addDept();}
}
例子:查詢所有同學的信息
package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import com.qf.JDBC.pojo.table;import javax.swing.*;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Stack;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
// jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8 5
// jdbc:mysql://localhost:3306/student?serverTimezone=UTC 8private static String username="root";private static String pass="123456";static {
// 1.加載驅動類try {
// 反射獲得驅動類Driver
// com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}// 2.獲取連接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("連接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}//查詢所有學生信息public static ArrayList<table> queryAll(){ArrayList<table> list=new ArrayList<>();String sql="select * from student.table";
// 獲得連接Connection conn=getConn();Statement st=null;try {st=conn.createStatement();ResultSet r=st.executeQuery(sql);while (r.next()){table t=new table(r.getString(1),r.getString(2),r.getInt("age"));//分別是第一列 第二列 age列list.add(t);}} catch (SQLException e) {throw new RuntimeException(e);}finally {try {st.close();//先打開的流后關閉conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}return list;}public static void main(String[] args) {ArrayList<table> arrayList=queryAll();for (table a:arrayList) {System.out.println(a);}}}
package com.qf.JDBC.pojo;import java.io.Serializable;public class table implements Serializable {//實體類 屬性與表一致private String name;private String gender;private int age;public table(String name, String gender, int age) {this.name = name;this.gender = gender;this.age = age;}public table() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "table{" +"name='" + name + '\'' +", gender='" + gender + '\'' +", age=" + age +'}';}
}
例子:修改和刪除
繼續用上面的table實體類
package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import com.qf.JDBC.pojo.table;import javax.swing.*;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Stack;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
// jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8 5
// jdbc:mysql://localhost:3306/student?serverTimezone=UTC 8private static String username="root";private static String pass="123456";static {
// 1.加載驅動類try {
// 反射獲得驅動類Driver
// com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}// 2.獲取連接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("連接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}// 修改部門public static void updateDept(){String sql="update student.table set age=21 where name='zt'";
// 獲得連接try {Statement st= getConn().createStatement();st.executeUpdate(sql);} catch (SQLException e) {throw new RuntimeException(e);}}//刪除public static void deleteDept(){String sql="delete from student.table where name='xx'";
// 獲得連接try {Statement st= getConn().createStatement();st.executeUpdate(sql);} catch (SQLException e) {throw new RuntimeException(e);}}public static void main(String[] args) {updateDept();deleteDept();}
}
JDBC實現分層處理
package com.xxxx.JDBC;//根包
common 公共包(所有模塊共用的類,數據庫連接類,分頁處理)
pojo(entiy)實體類的包(和表一一對應的類叫做實體類,Dept Emp)
test 測試包
dao 數據訪問對象(數據訪問層,對數據表增刪改查的代碼)
service 業務層(業務邏輯)
目錄

DBConn
package com.qf.JDBC.common;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DBConn {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";// jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8 5
// jdbc:mysql://localhost:3306/student?serverTimezone=UTC 8private static String username="root";private static String pass="123456";static {
// 1.加載驅動類try {
// 反射獲得驅動類Driver
// com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}// 2.獲取連接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("連接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}
}
StuDao
package com.qf.JDBC.dao;import com.qf.JDBC.pojo.Student;public interface StuDao {void addStu(Student s);void updateStu(Student s);void delStu(Student s);}
StuDaoImpl
package com.qf.JDBC.dao;import com.qf.JDBC.common.DBConn;
import com.qf.JDBC.pojo.Student;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;public class StuDaoImpl extends DBConn implements StuDao{@Overridepublic void addStu(Student s) {String sql="insert into student.table(name,gender,age) values (?,?,?)";
// 獲得連接Connection conn =DBConn.getConn();PreparedStatement st=null;try {st= getConn().prepareStatement(sql);st.setString(1,s.getName());st.setString(2,s.getGender());st.setInt(3,s.getAge());//執行語句int r= st.executeUpdate();if(r>=1){System.out.println("新增成功");}else {System.out.println("新增失敗");}} catch (SQLException e) {throw new RuntimeException(e);}finally {try {st.close();} catch (SQLException e) {throw new RuntimeException(e);}try {conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}}@Overridepublic void updateStu(Student s) {}@Overridepublic void delStu(Student s) {}
}
Student
package com.qf.JDBC.pojo;public class Student {private String name;private String gender;private int age;public Student(String name, String gender, int age) {this.name = name;this.gender = gender;this.age = age;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
StuService
package com.qf.JDBC.service;import com.qf.JDBC.dao.StuDao;
import com.qf.JDBC.dao.StuDaoImpl;
import com.qf.JDBC.pojo.Student;public class StuService {public static void main(String[] args) {StuDao stuDao=new StuDaoImpl();stuDao.addStu(new Student("張三","男",25));}
}