JDBC : sun公司发布的一个 java 程序和数据库之间的统信规范(接口)。
然后各大数据库厂商去实现 JDBC 规范(实现类),这些实现类打成压缩包,就是所谓的jar包。
JDBC作用: 用于Java程序和数据库通信。
使用 获取连接对象
//1. 添加jar
//2. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
//3. 通过驱动管理器获取连接对象
//3-1. 准备URL
String url = "jdbc:mysql://localhost:3306/db1" + CONFIG;
//3-2. 准备用户名
String name = "root";
//3-3. 准备密码
String pwd = "1234";
//得到连接对象
Connection conn = DriverManager.getConnection(url ,name, pwd);
添加数据
//3. 编写sql语句 ? 表示占位符
// id (自增键), fname, price , fcount , remark
String sql = "insert into t_fruit values(0, ?, ?, ?, ?)";
//4. 创建预处理命令对象
PreparedStatement psmt = conn.prepareStatement(sql);
//5. 填充参数
psmt.setString(1, "凤梨");
psmt.setInt(2, 14);
psmt.setInt(3, 5);
psmt.setString(4, "产地塔什库尔干");
//6. 执行更新(增删改),返回影响行数
int count = psmt.executeUpdate();
System.out.println(count > 0 ? "添加成功" : "添加失败");
//7. 释放资源(关闭连接)
psmt.close();
conn.close();
修改数据
String sql = "update t_fruit set fname = ? , remark = ? where fid = ?";
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, fruit.getFname());
psmt.setString(2, fruit.getRemark());
psmt.setInt(3, fruit.getFid());
int count = psmt.executeUpdate();
System.out.println(count > 0 ? "修改成功" : "修改失败");
//...释放资源
删除数据
String sql = "delete from t_fruit where fid = ?";
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setInt(1, 6);
int count = psmt.executeUpdate();
System.out.println(count > 0 ? "删除成功" : "删除失败");
//...释放资源
查询数据集合
String sql = "select * from t_fruit";
PreparedStatement psmt = conn.prepareStatement(sql);
ResultSet rs = psmt.executeQuery();
List fruitList = new ArrayList<>();
while (rs.next()) {
//表示读取当前行的第一列数据
//int id = resultSet.getInt("fid"); //参数也可以是结果集的列名
int fid = rs.getInt(1);
String fname = rs.getString(2);
int price = rs.getInt(3);
int fcount = rs.getInt(4);
String remark = rs.getString(5);
Fruit fruit = new Fruit(fid, fname, price, fcount, remark);
fruitList.add(fruit);
}
rs.close();
psmt.close();
conn.close();
查询单个数据
String sql = "select * from t_fruit where fid = ?";
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setInt(1, id);
ResultSet rs = psmt.executeQuery();
if (rs.next()) {
int fid = rs.getInt(1);
String fname = rs.getString(2);
int price = rs.getInt(3);
int fcount = rs.getInt(4);
String remark = rs.getString(5);
Fruit fruit = new Fruit(fid, fname, price, fcount, remark);
}
查询统计结果
String sql = "select count(*) from t_fruit";
PreparedStatement psmt = conn.prepareStatement(sql);
ResultSet rs = psmt.executeQuery();
if (rs.next()) {
int count = rs.getInt(1);
System.out.println("总记录条数: " + count);
}
分层
DAO (Data Access Object) 数据存取对象: 是指位于业务逻辑和持久化数据之间实现对持久化数据的访问对象。通俗来讲,就是将数据库操作都封装起来。
DAO中的方法都是单精度方法。单精度指的是这个方法的粒度不能再分了,已经非常细了(因此也称之为细粒度)。



