发表于: 2016-08-25 15:18:33
3 2321
今天完成的事情:学习JDBC。
收获:用JDBC完成对数据库的CRUD
1. 在自己的数据库(imooc)中创建数据表tdb_goods:
CREATE TABLE IF NOT EXISTS tdb_goods(
goods_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
goods_name VARCHAR(150) NOT NULL,
goods_cate VARCHAR(40) NOT NULL,
brand_name VARCHAR(40) NOT NULL,
goods_price DECIMAL(15,3) UNSIGNED NOT NULL DEFAULT 0,
is_show BOOLEAN NOT NULL DEFAULT 1,
is_saleoff BOOLEAN NOT NULL DEFAULT 0
);
2. 在数据表中增加记录;
3. 创建pojo类class Goods,包含以下属性:
private int id;
private String name;
private String cate;
private String brand;
private float price;
private boolean show;
private boolean saleoff;
并完成相应的getter、setter方法;
4. 创建工具类DBUtil,包含以下属性:
private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc";
private static final String USER = "root";
private static final String PASSWORD = "XXXXX";
private static ArrayList<Goods> goodsList = new ArrayList<Goods> ();
private static Goods goods;
在工具类中完成对数据库操作的各方法,如下:
A. 查询整个数据表
public static void query() throws Exception {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动程序
Connection con = DriverManager.getConnection(URL, USER, PASSWORD); // 获得数据库连接
Statement stmt = con.createStatement(); // 创建statement对象
ResultSet rs = stmt.executeQuery("select goods_id, goods_name, goods_price from tdb_goods");
while(rs.next()) {
goods = new Goods();
goods.setId(rs.getInt(1));
goods.setName(rs.getString(2));
goods.setPrice(rs.getFloat(3));
goodsList.add(goods);
goods = null;
}
for(Goods goods : goodsList){
System.out.println(goods.toString());
}
}
B. 通过id查询某条记录
public static Goods getById(int id) throws Exception {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动程序
Connection con = DriverManager.getConnection(URL, USER, PASSWORD); // 获得数据库连接
String sql = "select goods_id, goods_name, goods_price from tdb_goods where goods_id = ?";
PreparedStatement ptmt = con.prepareStatement(sql); // 创建Preparedstatement对象
ptmt.setInt(1, id);
ResultSet rs = ptmt.executeQuery();
while(rs.next()) {
goods = new Goods();
goods.setId(rs.getInt(1));
goods.setName(rs.getString(2));
goods.setPrice(rs.getFloat(3));
}
return goods;
}
C. 添加记录
public static void add(Goods goods) throws Exception {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动程序
Connection con = DriverManager.getConnection(URL, USER, PASSWORD); // 获得数据库连接
String sql = "Insert into tdb_goods (goods_name, goods_cate, brand_name, goods_price, is_show, is_saleoff) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement ptmt = con.prepareStatement(sql); // 创建Preparedstatement对象
ptmt.setString(1, goods.getName());
ptmt.setString(2, goods.getCate());
ptmt.setString(3, goods.getBrand());
ptmt.setFloat(4, goods.getPrice());
ptmt.setBoolean(5, goods.isShow());
ptmt.setBoolean(6, goods.isSaleoff());
ptmt.execute();
}
D. 更新相同id某一条记录
public static void update(Goods goods) throws Exception {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动程序
Connection con = DriverManager.getConnection(URL, USER, PASSWORD); // 获得数据库连接
String sql = "Update tdb_goods SET goods_name=?, goods_cate=?, brand_name=?, goods_price=? WHERE goods_id=?";
PreparedStatement ptmt = con.prepareStatement(sql); // 创建Preparedstatement对象
ptmt.setString(1, goods.getName());
ptmt.setString(2, goods.getCate());
ptmt.setString(3, goods.getBrand());
ptmt.setFloat(4, goods.getPrice());
ptmt.setInt(5, goods.getId());
ptmt.execute();
}
E. 删除某一条记录
public static void delete(int id) throws Exception {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动程序
Connection con = DriverManager.getConnection(URL, USER, PASSWORD); // 获得数据库连接
String sql = "DELETE FROM tdb_goods WHERE goods_id=?";
PreparedStatement ptmt = con.prepareStatement(sql); // 创建Preparedstatement对象
ptmt.setInt(1, id);
ptmt.execute();
}
未遇到问题。
明天计划的事情:对maven、mybatis有更深刻的理解,争取跑完任务1。
评论