本文共 6086 字,大约阅读时间需要 20 分钟。
随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。
jdbc是java连接数据库的一套API,完成如何将数据库中表的数据和内存中对象数据的转换。
jdbc是java连接数据库的一套标准。该标准定义了一系列的接口,这些接口由数据库厂商根据自己数据库的特点 提供实现类,用户根据接口调用数据库厂商的实现类,这样,无论连接什么数据库都是一套API.用户就可以屏蔽数据库的差异。 jdbc的操作步骤: 1、加载驱动 2、建立连接 3、执行SQL 4、关闭连接package cn;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.gjt.mm.mysql.Driver;public class TeacherDao { /** * 从对象中取出属性值,变成数据库中的一条记录 * * @param t */ public void add(Teacher t) { try { // 加载驱动 Driver d = new Driver(); // 建立连接 // localhost连接数据库的IP地址,localhost表示本机 // mydata 需要连接数据库名 // root mysql的用户名 // lovo mysql 的密码 Connection con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8", "root", "lovo"); System.out.println(con); // 执行SQL语句 PreparedStatement ps = con .prepareStatement("insert into t_teacher(teacherName,edu,job) values(?,?,?)"); // 设置占位符,从t所指向的对象中取出属性值,用来填充?(占位符) ps.setString(1, t.getName()); ps.setString(2, t.getEdu()); ps.setString(3, t.getJob()); // 更新数据库,将数据写入数据库 ps.executeUpdate(); // 关闭数据库 ps.close(); con.close(); } catch (Exception e) { // 显示出错信息 e.printStackTrace(); } } /** * 按主键删除 * * @param id */ public void del(int id) { try { Driver d = new Driver(); Connection con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8", "root", "lovo"); PreparedStatement ps = con .prepareStatement("delete from t_teacher where id=?"); ps.setInt(1, id); ps.execute(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 按照id修改学历,职称 * * @param id * @param edu * 学历 * @param job * 职称 */ public void update(int id, String edu, String job) { try { Driver d = new Driver(); Connection con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8", "root", "lovo"); PreparedStatement ps = con .prepareStatement("update t_teacher set edu=?,job=? where id=?"); ps.setInt(3, id); ps.setString(1, edu); ps.setString(2, job); ps.execute(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 根据主键查找对象 * * @param id * @return */ public Teacher findById(int id) { Teacher t = new Teacher(); try { Driver d = new Driver(); Connection con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8", "root", "lovo"); PreparedStatement ps = con .prepareStatement("select * from t_teacher where id=?"); ps.setInt(1, id); // 得到结果集,结果集中就是查询所得的数据 ResultSet rs = ps.executeQuery(); // 将结果集指针移动到下一条记录。如果有下一条记录返回true,否则返回false boolean isNext = rs.next(); if (isNext == true) {// 判断结果集中是否有数据 // 从数据库表中的id列中取出数据,设置在对象中的id属性中 t.setId(rs.getInt("id")); t.setName(rs.getString("teacherName")); t.setEdu(rs.getString("edu")); t.setJob(rs.getString("job")); } rs.close(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } return t; } /** * 查询所有 * * @return */ public ListfindAll() { List list = new ArrayList (); try { Driver d = new Driver(); Connection con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8", "root", "lovo"); PreparedStatement ps = con .prepareStatement("select * from t_teacher"); ResultSet rs = ps.executeQuery(); // 判断是否下一条记录,如果有则循环,没有则退出循环 while (rs.next()) { // 将数据库记录数据取出,变成对象的属性值 Teacher t = new Teacher(); t.setId(rs.getInt("id")); t.setName(rs.getString("teacherName")); t.setEdu(rs.getString("edu")); t.setJob(rs.getString("job")); // 将封装好的数据库数据的对象加入集合 list.add(t); } rs.close(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } return list; } /** * 按姓名模糊查询 * * @param name * @return */ public List findByName(String name) { List list = new ArrayList (); try { Driver d = new Driver(); Connection con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8", "root", "lovo"); PreparedStatement ps = con .prepareStatement("select * from t_teacher where teacherName like ?"); ps.setString(1, "%" + name + "%"); ResultSet rs = ps.executeQuery(); while (rs.next()) { Teacher t = new Teacher(); t.setId(rs.getInt("id")); t.setName(rs.getString("teacherName")); t.setEdu(rs.getString("edu")); t.setJob(rs.getString("job")); list.add(t); } rs.close(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } return list; } public static void main(String[] args) { TeacherDao dao = new TeacherDao(); dao.add(new Teacher("方正", "大专", "教授"));// 测试新增 dao.del(8);// 测试删除 dao.update(4, "本科", "大和尚");// 测试修改 Teacher t = dao.findById(1);// 测试根据id查找 System.out.println(t.getId() + " " + t.getName() + " " + t.getEdu() + " " + t.getJob()); List list = dao.findAll();// 测试查找全部数据 for (Teacher t2 : list) { System.out.println(t2.getId() + " " + t2.getName() + " " + t2.getEdu() + " " + t2.getJob()); } List list1 = dao.findByName("方");// 测试按姓名模糊查询 for (Teacher t1 : list) { System.out.println(t1.getId() + " " + t1.getName() + " " + t1.getEdu() + " " + t1.getJob()); } }}class Teacher { /** id */ private int id; /** 老师姓名 */ private String name; /** 学历 */ private String edu; /** 职称 */ private String job; public Teacher( String name, String edu, String job) { super(); this.name = name; this.edu = edu; this.job = job; } public Teacher() { super(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEdu() { return edu; } public void setEdu(String edu) { this.edu = edu; } public String getJob() { return job; } public void setJob(String job) { this.job = job; }}
转载地址:http://fvtei.baihongyu.com/