201521123044 《Java程序设计》第14周学习总结
1. 本章学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。
友情提示:导图用ctrl+鼠标滚轮放大看更清楚些
2. 书面作业
1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)
-参考:实验任务书-题目1
显示当前数据库服务器中的数据库列表:
使用数据库前要先选择数据库:
显示数据库中的数据表:
创建数据库:
删除数据库:
查看当前打开的数据库:
插入数据:
显示表中的记录:
2.使用JDBC连接数据库与Statement
-参考:实验任务书-题目2
- 2.1使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
try {
//201521123044
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
// id | stuno | name | gender | birthdate | major
while(resultSet.next()){
String stuno = resultSet.getString("stuno");
String name = resultSet.getString("name");
Date date = resultSet.getDate("birthdate");
System.out.print(" stuno= "+stuno+" name= "+name+" birthdate="+date);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
- 2.2使用JDBC操作数据库主要包含哪几个步骤?
通过一段代码来展示JDBC操作数据库主要步骤:
try {
// 1、加载数据库驱动( 成功加载后,会将Driver类的实例注册到DriverManager类中)
Class.forName(driver );
// 2、获取数据库连接
conn = DriverManager.getConnection(url, username, password);
// 3、获取数据库操作对象
stmt = conn.createStatement();
// 4、定义操作的SQL语句
String sql = "select * from user where id = 100";
// 5、执行数据库操作
rs = stmt.executeQuery(sql);
// 6、获取并操作结果集
while (rs.next()) {
System.out.println(rs.getInt("id"));
System.out.println(rs.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 7、关闭对象,回收数据库资源
if (rs != null) { //关闭结果集对象
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) { // 关闭数据库操作对象
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) { // 关闭数据库连接对象
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3.PreparedStatement与参数化查询
- 3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
关键代码:
//根据参数查询数据
strSql = "select * from students where Id < ?";
pStatement = con.prepareStatement(strSql);
pStatement.setInt(1, 10);
rs = pStatement.executeQuery();
//数据库中存在如下记录
strSql = "select * from students";
rs = pStatement.executeQuery(strSql);
System.out.println("id\t编号 \t\t学号\t姓名\t年龄\t\t专业");
while(rs.next()){
//通过列的下标(index)取数据
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getInt(2)+"\t");
System.out.print(rs.getString(3)+"\t");
System.out.print(rs.getInt(4)+"\t ");
System.out.println(rs.getString(6));
//(或者)通过列名取数据(这种方式取数据会更直观)
/*System.out.println(rs.getInt("id"));
System.out.println(rs.getString("stuno"));
System.out.println(rs.getString("name"));
System.out.println(rs.getInt("age"));
System.out.println(rs.getString("major"));*/
}
pStatement.close();//立即释放资源
- 3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。对比普通方法插入与使用executeBatch方法所消耗的时间。(使用JUint4测试,需要出现时间对比截图)
4.JDBCUtil与DAO
- 4.1 粘贴一段你认为比较有价值的代码,并说明为什么要摘取这段代码。出现学号
//201521123044
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
String sql = "select * from user";//表中有id和name这列
try {
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.format("该记录的id=%d,姓名=%s\n",id,name);
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.closeConnection(conn);
}
}
}
- 4.2 使用DAO模式访问数据库有什么好处?
①将获得连接与释放连接的操作封装起来,提供访问数据库的统一入口
②Dao接口(将接口与实现相分离)
例:studentDao接口与各实现类的关系
③DAO模式的使用相当于建立一个接口,接口中定义了此应用程序中将会用到的所有方法。在程序中,当需要和数据进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口上的方法,代码之间的板块分配很清晰,而且在后期对程序的修改,只需对DAO模式中的某个方法修改即可,不需要整个项目都进行修改。
5.使用数据库改造购物车系统
-
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
增加商品:
删除商品:
-
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
数据库存储:方便管理,并且读取速度快效率高,容量极大。最关键最关键的还是快这个优势,如果是简单的数据存储,那用excel就可以,但作为一些软件的后台数据管理,就必须利用数据库进行操作。
文件存储:使用文件存储与管理,硬盘空间浪费严重,容易造成数据的不一致;把数据组织成相互独立的数据文件,整体无结构;