1、传统JDBC7步骤:
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/productsystem?useUnicode=true&character=utf-8";//指定连接的数据库地址
//时数据库地址为jdbc:mysql:(协议名)//localhost(服务器的地址在本地主机):3306(数据库端口号)/productsystem(库名)
//?useUnnicode=true&character=utf-8 (?)是传递参数的关键字,传递的参数为可以使用Unnicode编码和字符格式为UTF-8
String user = "root";//用户名
String password = "";
try {
//1.注册驱动,加载Driver类
Class.forName("com.mysql.jdbc.Driver");//执行类加载
//2.获取连接对象
Connection con = DriverManager.getConnection(url,user,password);
System.out.println("连接成功");
//3.编写sql
String sql = "select * from t_product limit 0,4";
//String sql = "insert into t_product (product_name,price,product_type_id) values('宏碁记笔记本旗舰版',5000.00,6)";
//4.声明sql的执行者
Statement state = con.createStatement();
//5.执行sql语句,返回受影响的行数
ResultSet rs = state.executeQuery(sql);
while(rs.next()) {//判断当前指针指向的行是否非空(默认指向表中第一行)
//类似于迭代器中的hasNext()方法
int id = rs.getInt("id");
String name = rs.getString("product_name");
double price = rs.getDouble("price");
int type = rs.getInt("product_type_id");
System.out.println(id+" "+name+" "+price+" "+type);
//get方法在循环语句中时仅返回值,在循环语句末尾则返回值后将指针移向下一行
//类似于迭代器中的next()方法
}
//6.打印执行结果
//System.out.println(rows);
//关闭资源
state.close();
con.close();
}
catch (SQLException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
2、优化:
①访问数据库设置连接信息的步骤是可以封装的,且用户应该可以从本地修改此连接信息。
②连接数据库和关闭资源的步骤是可以封装的。
③对数据库进行查询操作和更新操作是可以封装的。
注意:只有sql语句根据系统需求而定,不同方法不一样,无法封装。
经过封装后,JDBC7步骤被简化为两步,即JDBC的作用,编写一个sql语句,并执行它获得它从数据库中得到的返回值。
3、封装
封装图:
封装包与工具类:
源码实现:
①访问数据库设置连接信息的步骤是可以封装的,且用户应该可以从本地修改此连接信息。
本地文件,放在src目录中。
②连接数据库和关闭资源的步骤是可以封装的。
③对数据库进行查询操作和更新操作是可以封装的。