JDBC之Java連接mysql實現增刪改查


使用軟件:mysql、eclipse

鏈接步驟:

1.注冊驅動 

2.創建一個連接對象

3.寫sql語句

4.執行sql語句並返回一個結果或者結果集

5.關閉鏈接(一般就是connection、statement、setresult)這三個連接對象,關閉順序一般是(setresult    --->  statement  -->  setresult  )

一、直接連接方法:(這種方法就是講sql語句和結果所有的步驟寫在一起) 不建議使用該方法

 1 public static void main(String[] args) {
 2         String url = "jdbc:mysql://localhost:3306/students";
 3         String user = "root";
 4         String password = "admin";
 5         Connection conn = null;
 6         Statement st = null;
 7         
 8         try {
 9             // 1. 注冊驅動
10             Class.forName("com.mysql.jdbc.Driver");
11             // 2. 創建一個鏈接對象
12             conn = DriverManager.getConnection(url,user,password);
13             // 3. 創建一個sql語句的發送命令對象
14             String sql = "insert into student values('2001','Tom','20','7000')";        
15             st= conn.createStatement();
16             // 4. 執行sql語句,拿到查詢的結果集對象
17             st.executeQuery(sql);20         } catch (Exception e) {
21             e.printStackTrace();
22         }finally {
23             // 5. 關閉鏈接 ,命令對象 ,結果集
24             if(st != null) {
25                 try {
26                     st.close();
27                 } catch (Exception e) {
28                     e.printStackTrace();
29                 }
30             }
31             if(conn != null) {
32                 try {
33                     conn.close();
34                 } catch (Exception e) {
35                     e.printStackTrace();
36                 }
37             }
38         }

二、建立工具類方法,將必要的幾步寫一個類,使用的時候直接調用建議使用

1.注冊驅動、創建連接對象、關閉資源    這三部一般可以寫一個類,由於寫sql語句和執行sql語句的結果不一致,所以可以將其在用到的時候在寫

2.一般寫工具類都是寫成靜態方法,以方便調用

//這是工具類:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcUtils { private static String driverName = "com.mysql.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/student_achievement_system"; private static String user = "root"; private static String password = "admin"; /** * 鏈接數據庫 */ static { try { Class.forName(JdbcUtils.driverName); } catch (Exception e) { e.printStackTrace(); } } /** * 獲取鏈接對象connection * @return */ public static Connection getConnection() { try { return DriverManager.getConnection(JdbcUtils.url, JdbcUtils.user, JdbcUtils.password); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 關閉資源 * @param conn * @param st * @param rs */ public static void close(Connection conn,Statement st,ResultSet rs) { if(rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } if(st != null) { try { st.close(); } catch (Exception e) { e.printStackTrace(); } } if(conn != null) { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }

  

//這是對數據庫的基本操作類

// 增加、刪除、更新、查找一條、查找所有的方法

public class StudentsDaoImpl implements IStudentsDao {     //增加 @Override public int save(Students student) { Connection conn = null; PreparedStatement ps = null; try { conn = JdbcUtils.getConnection(); String sql = "insert into students values(?,?,?,?,?,?)"; ps = conn.prepareStatement(sql); ps.setInt(1, student.getStudentId()); ps.setString(2, student.getStudentName()); ps.setString(3, student.getSex()); ps.setString(4, student.getPhoneNo()); ps.setString(5, student.getAddress()); ps.setDate(6, (Date) student.getBirthday()); int row = ps.executeUpdate(); return row; } catch (Exception e) { e.printStackTrace(); }finally { JdbcUtils.close(conn, ps, null); } return 0; }       //刪除 @Override public int delete(int studentId) { Connection conn = null; PreparedStatement ps = null; try { conn = JdbcUtils.getConnection(); String sql = "delete from students where studentId=?"; ps = conn.prepareStatement(sql); ps.setInt(1, studentId); int row = ps.executeUpdate(); return row; } catch (Exception e) { e.printStackTrace(); }finally { JdbcUtils.close(conn, ps, null); } return 0; }     //更新 @Override public int update(int studentId, Students student) { Connection conn = null; PreparedStatement ps = null; try { conn = JdbcUtils.getConnection(); String sql = "update students set studentName=?,sex=?,phoneNo=?,address=?,birthday=? where studentId=?"; ps = conn.prepareStatement(sql); ps.setString(1, student.getStudentName()); ps.setString(2, student.getSex()); ps.setString(3, student.getPhoneNo()); ps.setString(4, student.getAddress()); ps.setDate(5, ((Date) student.getBirthday())); ps.setInt(6, studentId); int row = ps.executeUpdate(); return row; } catch (Exception e) { e.printStackTrace(); }finally { JdbcUtils.close(conn, ps, null); } return 0; }       //查找一條數據 @Override public Students getByStudentId(int studentId) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "select * from students where studentId=?"; ps = conn.prepareStatement(sql); ps.setInt(1, studentId); rs = ps.executeQuery(); if(rs.next()) { Students student = new Students(); student.setStudentId(rs.getInt("studentId")); student.setStudentName(rs.getString("studentName")); student.setSex(rs.getString("sex")); student.setPhoneNo(rs.getString("phoneNo")); student.setAddress(rs.getString("address")); student.setBirthday(rs.getDate("birthday")); return student; } } catch (Exception e) { e.printStackTrace(); }finally { JdbcUtils.close(conn, ps, rs); } return null; }       //查找所有數據 @Override public List<Students> getAll() { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "select * from students"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); List<Students> studentsList = new ArrayList<>(); while(rs.next()) { Students student = new Students(); student.setStudentId(rs.getInt("studentId")); student.setStudentName(rs.getString("studentName")); student.setSex(rs.getString("sex")); student.setPhoneNo(rs.getString("phoneNo")); student.setAddress(rs.getString("address")); student.setBirthday(rs.getDate("birthday")); studentsList.add(student); } return studentsList; } catch (Exception e) { e.printStackTrace(); }finally { JdbcUtils.close(conn, ps, rs); } return null; }
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM