关于jdbc

来源:互联网 发布:linux apache 加载php 编辑:程序博客网 时间:2024/05/17 18:27

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,否则返回falseboolean 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 List<Teacher> findAll() {List<Teacher> list = new ArrayList<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");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<Teacher> findByName(String name) {List<Teacher> list = new ArrayList<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 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<Teacher> list = dao.findAll();// 测试查找全部数据for (Teacher t2 : list) {System.out.println(t2.getId() + "  " + t2.getName() + " "+ t2.getEdu() + "  " + t2.getJob());}List<Teacher> 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;}}


 

原创粉丝点击