博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于jdbc
阅读量:4257 次
发布时间:2019-05-26

本文共 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 List
findAll() { 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/

你可能感兴趣的文章
Java进阶之自定义ArrayList&斗地主发牌案例
查看>>
JavaWeb之filter&listener&文件上传
查看>>
JavaWeb之Ajax&json
查看>>
BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
查看>>
转载:在 Windows 10 下遇到移动硬盘不自动分配盘符的问题
查看>>
DDR2 SSTL_18标准
查看>>
DDR3的DQS_p/n信号电平摆幅变化不一致现象
查看>>
北大旁听生中的历史名人
查看>>
大唐凌烟阁开国廿四将
查看>>
Access数据库出现"Selected collating sequence not supported by the operating system."错误
查看>>
逻辑思维测试题
查看>>
如何用Easy CHM制作CHM格式电子书(帮助文档)
查看>>
为什么学习python
查看>>
华为进不了美国,并不是贸易保护这么简单
查看>>
markdown文件的基本常用编写语法(图文并茂)
查看>>
java变量简介
查看>>
Shell十分钟入门
查看>>
nginx 配置 upstream backup 报错
查看>>
Linux执行 wget命令:提示command not found的两种解决方法
查看>>
openssl实现md5加rsa签名
查看>>