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就可以,但作为一些软件的后台数据管理,就必须利用数据库进行操作。
    文件存储:使用文件存储与管理,硬盘空间浪费严重,容易造成数据的不一致;把数据组织成相互独立的数据文件,整体无结构;

posted @ 2017-05-28 14:27  Min21  阅读(243)  评论(1编辑  收藏  举报