通過一天的視頻學習,認識了jdbc的連接原理前來小結:
游標讀取數據庫表的行一次讀取一個,getXxx()方法讀取表的列一個數據
next()方法可以讓游標下移
可以把數據庫的表看做是一個類,每條記錄就是一個對象,所以要封裝表
測試類 Jdbc08 .java
/** * 練習查詢 db4的emp數據然后打印 * 定義一個方法,查詢emp表的數據將其封裝為對象,然后裝在集合. * 1.定義類emp類 * 2.定義方法public 返回List<Emp> findAll() * 3.實現方法 select * from emp * @author 三只堅果 * @date 2019/9/14 21:17 */ public class Jdbc08 { public static void main(String[] args) { List<Emp> all = new Jdbc08().findAll(); all.forEach(System.out::println); System.out.println(all.size()+"條記錄"); } public List<Emp> findAll(){//查詢所有emp數據 Connection conn =null; Statement statement =null; ResultSet rs =null; List<Emp> list=null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4", "root", "123"); String sql="select * from emp"; statement = conn.createStatement(); rs = statement.executeQuery(sql);//rs是游標指向一行,getXxx("參數")指中列的一個數據,所以選中一個數據 //遍歷結果,封裝對象裝在集合 Emp emp=null; list= new ArrayList<>(); while (rs.next()){ int id = rs.getInt("id"); String ename = rs.getString("ename"); int job_id = rs.getInt("job_id"); int mgr = rs.getInt("mgr"); Date joindate = rs.getDate("joindate"); double salary = rs.getDouble("salary"); double bouns = rs.getDouble("bonus"); int dept_id = rs.getInt("dept_id"); //封裝對象 emp=new Emp(); emp.setId(id); emp.setEname(ename); emp.setJob_id(job_id); emp.setMgr(mgr); emp.setJoindate(joindate); emp.setSalary(salary); emp.setBouns(bouns); emp.setDept_id(dept_id); list.add(emp); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally {//釋放資源 if (rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } return list; } } /** * 晚安! * @author BinPeng * @date 2019/9/14 22:04 */
Emp.java 封裝類 ALT+INSERT IDEA快捷鍵自動生成!!!
package HeiMaSQL02.emp08; import java.util.Date; /** * 封裝Emp表 * @author BinPeng * @date 2019/9/14 21:24 */ public class Emp { private int id; private String ename; private int job_id; private int mgr; private Date joindate; private double salary; private double bouns; private int dept_id; @Override public String toString() { return "Emp{" + "id=" + id + ", ename='" + ename + '\'' + ", job_id=" + job_id + ", mgr=" + mgr + ", joindate=" + joindate + ", salary=" + salary + ", bouns=" + bouns + ", dept_id=" + dept_id + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public int getJob_id() { return job_id; } public void setJob_id(int job_id) { this.job_id = job_id; } public int getMgr() { return mgr; } public void setMgr(int mgr) { this.mgr = mgr; } public Date getJoindate() { return joindate; } public void setJoindate(Date joindate) { this.joindate = joindate; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public double getBouns() { return bouns; } public void setBouns(double bouns) { this.bouns = bouns; } public int getDept_id() { return dept_id; } public void setDept_id(int dept_id) { this.dept_id = dept_id; } }
emp 數據庫表 (數據庫都給你備好了!夠意思吧!!!)
/* Navicat MySQL Data Transfer Source Server : first Source Server Type : MySQL Source Server Version : 50725 Source Host : localhost:3306 Source Schema : db4 Target Server Type : MySQL Target Server Version : 50725 File Encoding : 65001 Date: 14/09/2019 22:15:35 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for emp -- ---------------------------- DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `id` int(11) NOT NULL, `ename` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, `job_id` int(11) NULL DEFAULT NULL, `mgr` int(11) NULL DEFAULT NULL, `joindate` date NULL DEFAULT NULL, `salary` decimal(7, 2) NULL DEFAULT NULL, `bonus` decimal(7, 2) NULL DEFAULT NULL, `dept_id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `emp_jobid_ref_job_id_fk`(`job_id`) USING BTREE, INDEX `emp_deptid_ref_dept_id_fk`(`dept_id`) USING BTREE, CONSTRAINT `emp_deptid_ref_dept_id_fk` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `emp_jobid_ref_job_id_fk` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of emp -- ---------------------------- INSERT INTO `emp` VALUES (1001, '啦啦', 4, 1004, '2000-12-17', 8000.00, NULL, 20); INSERT INTO `emp` VALUES (1002, '吖吖', 3, 1006, '2001-02-20', 16000.00, 3000.00, 30); INSERT INTO `emp` VALUES (1003, '啊吖', 3, 1006, '2001-02-22', 12500.00, 5000.00, 30); INSERT INTO `emp` VALUES (1004, '訂單', 2, 1009, '2001-04-02', 29750.00, NULL, 20); INSERT INTO `emp` VALUES (1005, '李方法', 4, 1006, '2001-09-28', 12500.00, 14000.00, 30); INSERT INTO `emp` VALUES (1006, '宋方法', 2, 1009, '2001-05-01', 28500.00, NULL, 30); INSERT INTO `emp` VALUES (1007, '發', 2, 1009, '2001-09-01', 24500.00, NULL, 10); INSERT INTO `emp` VALUES (1008, '豬發', 4, 1004, '2007-04-19', 30000.00, NULL, 20); INSERT INTO `emp` VALUES (1009, 'utah', 1, NULL, '2001-11-17', 50000.00, NULL, 10); INSERT INTO `emp` VALUES (1010, '吳讓她', 3, 1006, '2001-09-08', 15000.00, 0.00, 30); INSERT INTO `emp` VALUES (1011, '沙讓他', 4, 1004, '2007-05-23', 11000.00, NULL, 20); INSERT INTO `emp` VALUES (1012, '李讓他', 4, 1006, '2001-12-03', 9500.00, NULL, 30); INSERT INTO `emp` VALUES (1013, '餓龍', 4, 1004, '2001-12-03', 30000.00, NULL, 20); INSERT INTO `emp` VALUES (1014, '餓', 4, 1007, '2002-01-23', 13000.00, NULL, 10); SET FOREIGN_KEY_CHECKS = 1;