1. 程式人生 > >使用JDBC連線MySQL資料庫並且完成增刪改查完整程式碼

使用JDBC連線MySQL資料庫並且完成增刪改查完整程式碼

完整路徑截圖:
路徑

**//BaseDao.java檔案**
package cn.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {

    /**
     * 1.四個常量 driver 驅動 url 連線地址 username資料庫登入名 password 密碼
     */
private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://127.0.0.1:3306/myschool?characterEncoding=utf-8"; private static final String USERNAME = "root"; private static final String PASSWOED = "root"; // 2.static塊載入驅動類 static { try
{ Class.forName(DRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 3.用DriverManager獲取資料庫連線物件Connection public Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWOED); } // 4.用connection物件獲取preparedStatement預編譯執行物件
public PreparedStatement createPreparedStatement(Connection conn, String sql, Object... params) throws SQLException { PreparedStatement pstmt = conn.prepareStatement(sql); if (params != null && params.length > 0) { int i = 1;// 標識“?”佔位符的位置,預設為1,表示第一個? for (Object p : params) { pstmt.setObject(i, p); i++; } } return pstmt; } // 5.公用的DML語句執行方法,執行增、刪、改,返回影響行數 public int excuteDML(String sql, Object... params) { // 獲取Connection連線物件 Connection conn = null; // 獲取編譯執行物件 PreparedStatement pstmt = null; int result = 0; try { conn = this.getConnection(); pstmt = this.createPreparedStatement(conn, sql, params); result = pstmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { this.closeAll(conn, pstmt, null); } return result; } protected void closeAll(Connection conn, PreparedStatement stmt, ResultSet rs) { if (rs != null) { try { rs.close();// 關閉結果集 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { // 關閉連線物件和執行物件 this.closeConnAndPstmt(conn, stmt); } } else { this.closeConnAndPstmt(conn, stmt); } } private void closeConnAndPstmt(Connection conn, PreparedStatement stmt) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } } **//StudentServlet.java檔案** package cn.servlet; import java.util.List; import java.util.Scanner; import cn.entit.Student; import cn.service.StudentService; import cn.service.impl.StudentServiceImpl; public class StudentServlet { // 定義業務邏輯層介面,指向業務邏輯層實現類 private static StudentService studentService = new StudentServiceImpl(); /** * 表示控制層:學生表 * * @param args * 作用:傳遞使用者輸入的資訊,呼叫後臺業務邏輯層程式碼,實現增刪改查 * */ public static void main(String[] args) { Scanner input = new Scanner(System.in); do { System.out.println("請選擇操作型別:1.新增2.刪除3.修改4.查詢5.學號查詢"); int choose = input.nextInt(); switch (choose) { case 1: addStudent(input);// 新增 break; case 2: delStudent(input);// 刪除 break; case 3: insStudent(input);// 修改 break; case 4: selStudent();// 查詢 break; case 5: // 學號查詢 selectStudentByNo(input);// 查詢 break; default: System.out.println("無效輸入"); break; } } while (true); } private static void selectStudentByNo(Scanner input) { System.out.println("請輸入您要查詢的學號:"); Integer studentNo = input.nextInt(); List<Student> students = studentService.selectStudentByNo(studentNo); for (Student s : students) { System.out.println("學號:" + s.getStudentNo() + "\t姓名" + s.getStudentName() + "\t手機號:" + s.getPhone() + "\t生日" + s.getBornData()); } } private static void selStudent() { List<Student> students = studentService.selStudent(); for (Student s : students) { System.out.println("學號:" + s.getStudentNo() + "\t姓名" + s.getStudentName() + "\t手機號:" + s.getPhone() + "\t生日" + s.getBornData()); } } // 修改 private static void insStudent(Scanner input) { System.out.println("請輸入要修改的學號:"); Integer studentNo = input.nextInt(); System.out.println("請輸入要修改的密碼:"); String loginPwd = input.next(); Student student = new Student(); student.setStudentNo(studentNo); student.setLoginPwd(loginPwd); int result = studentService.insStudent(student); if (result > 0) { System.out.println("更新成功"); } else { System.out.println("更新失敗"); } } // 刪除 private static void delStudent(Scanner input) { System.out.println("請輸入要刪除的學號"); int studentNo = input.nextInt(); int result = studentService.delStudent(studentNo); if (result > 0) { System.out.println("刪除成功"); } else { System.out.println("刪除失敗"); } } // 新增 private static void addStudent(Scanner input) { // Scanner input = new Scanner(System.in); System.out.println("請輸入學號:"); Integer studentNo = input.nextInt(); System.out.println("請輸入登入密碼:"); String loginPwd = input.next(); System.out.println("請輸入學生姓名:"); String studentName = input.next(); System.out.println("請輸入性別:"); String sex = input.next(); System.out.println("請輸入年級編號:"); Integer gradelD = input.nextInt(); Student student = new Student(studentNo, loginPwd, studentName, sex, gradelD); // 呼叫業務邏輯層新增學生資訊,獲取影響行數 int result = studentService.addStudeng(student); if (result > 0) { System.out.println("新增成功"); } else { System.out.println("新增失敗"); } } } **//StudentService.java檔案** package cn.service; import java.util.List; import cn.entit.Student; public interface StudentService { int addStudeng(Student student); int delStudent(int studentNo); int insStudent(Student student); List<Student> selStudent(); List<Student> selectStudentByNo(Integer studentNo); } **//StudentServiceImpl.java檔案** package cn.service.impl; import java.util.ArrayList; import java.util.List; import cn.dao.StudentDao; import cn.dao.impl.StudengDaoImpl; import cn.entit.Student; import cn.service.StudentService; /** * 業務邏輯層實現類:學生表 作用:傳遞的引數合法性,及業務邏輯分支判斷,呼叫資料訪問層實現CRUD */ public class StudentServiceImpl implements StudentService { // 建立資料訪問層介面物件,指向資料訪問層實現類 private StudentDao studentDao = new StudengDaoImpl(); @Override public int addStudeng(Student student) { int result = 0;// 影響行數 if (student != null) { if (student.getStudentNo() != null) { // 當資料合法時,呼叫資料訪問層,執行CRUD result = studentDao.addStudent(student); } } return result; } @Override public int delStudent(int studentNo) { int result = 0;// 影響行數 if (studentNo >= 9999 && studentNo <= 100000) { // 當資料合法時,呼叫資料訪問層,執行CRUD result = studentDao.delStudent(studentNo); } return result; } @Override public int insStudent(Student student) { int result = 0;// 影響行數 if (student != null) { if (student.getStudentNo() != null) { // 當資料合法時,呼叫資料訪問層,執行CRUD result = studentDao.insStudent(student); } } return result; } @Override public List<Student> selStudent() { return studentDao.selStudent(); } @Override public List<Student> selectStudentByNo(Integer studentNo) { List<Student> list=new ArrayList<Student>(); if (studentNo >= 9999 && studentNo <= 100000) { // 當資料合法時,呼叫資料訪問層,執行CRUD list = studentDao.selectStudentByNo(studentNo); } return list; } } **//Student.java檔案** package cn.entit; import java.util.Date; /** * 學生表實體類 * * @author Administrator * */ public class Student { private Integer studentNo;// 學號 private String loginPwd;// 登入密碼 private String studentName;// 學生姓名 private String sex;// 性別 private Integer gradelD;// 年級編號 private String phone;// 手機號 private String address;// 地址 private Date bornData;// 出生日期 private String email;// 郵箱 private String identityCard;// 身份證號 public Student() { // TODO Auto-generated constructor stub } public Student(Integer studentNo, String loginPwd, String studentName, String sex, Integer gradelD, String phone, String address, Date bornData, String email, String identityCard) { super(); this.studentNo = studentNo; this.loginPwd = loginPwd; this.studentName = studentName; this.sex = sex; this.gradelD = gradelD; this.phone = phone; this.address = address; this.bornData = bornData; this.email = email; this.identityCard = identityCard; } public Student(Integer studentNo, String loginPwd, String studentName, String sex, Integer gradelD) { super(); this.studentNo = studentNo; this.loginPwd = loginPwd; this.studentName = studentName; this.sex = sex; this.gradelD = gradelD; } public Integer getStudentNo() { return studentNo; } public void setStudentNo(Integer studentNo) { this.studentNo = studentNo; } public String getLoginPwd() { return loginPwd; } public void setLoginPwd(String loginPwd) { this.loginPwd = loginPwd; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getGradelD() { return gradelD; } public void setGradelD(Integer gradelD) { this.gradelD = gradelD; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Date getBornData() { return bornData; } public void setBornData(Date bornData) { this.bornData = bornData; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getIdentityCard() { return identityCard; } public void setIdentityCard(String identityCard) { this.identityCard = identityCard; } } **//StudentDao.java檔案** package cn.dao; import java.util.List; import cn.entit.Student; public interface StudentDao { int addStudent(Student student); int delStudent(int studentNo); int insStudent(Student student); List<Student> selStudent(); List<Student> selectStudentByNo(Integer studentNo); } //StudengDaoImpl.java檔案 package cn.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import cn.dao.StudentDao; import cn.entit.Student; import cn.utils.BaseDao; /** * 資料訪問層實現類:學生表 * * @author Administrator 作用:呼叫jdbc連線,執行增刪改查方法,實現資料持久化操作 */ public class StudengDaoImpl extends BaseDao implements StudentDao { // 全域性的資料庫3個物件,連線、執行、結果集 private Connection conn = null; private PreparedStatement pstmt = null; private ResultSet rs = null; @Override public int addStudent(Student student) { String sql = "insert into student(studentNo, loginPwd, studentName, sex,gradelD)value (?,?,?,?,?)"; Object[] params = { student.getStudentNo(), student.getLoginPwd(), student.getStudentName(), student.getSex(), student.getGradelD() }; return this.excuteDML(sql, params); } @Override public int delStudent(int studentNo) { String sql = "delete from student where studentNo=?"; Object[] params = { studentNo }; return this.excuteDML(sql, params); } @Override public int insStudent(Student student) { String sql = "update student set loginPwd=? where studentNo=?"; Object[] params = { student.getLoginPwd(), student.getStudentNo() }; return this.excuteDML(sql, params); } @Override public List<Student> selStudent() { List<Student> list = new ArrayList<Student>(); try { conn = this.getConnection();// 1.獲取資料庫連線物件 String sql = "select studentNo,studentName,phone,bornData from student"; pstmt = this.createPreparedStatement(conn, sql);// 2.獲取預編譯執行物件 rs = pstmt.executeQuery();// 3.執行查詢語句DQL while (rs.next()) { Student student = new Student(); student.setStudentNo(rs.getInt("studentNo")); student.setStudentName(rs.getString("studentName")); student.setPhone(rs.getString("phone")); student.setBornData(rs.getDate("bornData")); list.add(student); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { this.closeAll(conn, pstmt, rs); } return list; } @Override public List<Student> selectStudentByNo(Integer studentNo) { List<Student> list = new ArrayList<Student>(); try { conn = this.getConnection();// 1.獲取資料庫連線物件 String sql = "select studentNo,studentName,phone,bornData from student where studentNo=?"; pstmt = this.createPreparedStatement(conn, sql);// 2.獲取預編譯執行物件 pstmt.setInt(1, studentNo); rs = pstmt.executeQuery();// 3.執行查詢語句DQL while (rs.next()) { Student student = new Student(); student.setStudentNo(rs.getInt("studentNo")); student.setStudentName(rs.getString("studentName")); student.setPhone(rs.getString("phone")); student.setBornData(rs.getDate("bornData")); list.add(student); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { this.closeAll(conn, pstmt, rs); } return list; } }

//資料庫student表截圖
這裡寫圖片描述
本文原創與:美推網,請勿轉載。