zoukankan      html  css  js  c++  java
  • 201521123017 《Java程序设计》第14周学习总结

    1. 本周学习总结

    2. 书面作业

    Q1.MySQL数据库基本操作

    建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
    在自己建立的数据库上执行常见SQL语句(截图)
    -参考:实验任务书-题目1

    • 添加自己的信息到表students,将表students的学生信息展示

    • 再添加一个信息,并删除

    • 展示students表中的全部学号

    • 将名字改变

    Q2.使用JDBC连接数据库与Statement

    2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
    2.2 使用JDBC操作数据库主要包含哪几个步骤?
    -参考:实验任务书-题目2

    2.1 关键代码:

    //201521123017
    try {
    	conn = DriverManager.getConnection(URL,userName,password);
    	Statement statement = conn.createStatement();
    	ResultSet resultSet = statement.executeQuery(sql);
    	//JDBC连接数据库
    	while(resultSet.next()){
    		int id = resultSet.getInt("id");
    		String stuno = resultSet.getString("stuno");
    		String name = resultSet.getString("name");
    		System.out.print("id="+id+" stuno="+stuno+" name="+name);
    	}	
    } catch (SQLException e) {
    	e.printStackTrace();
    }finally{
    	if(conn!=null)
    		try {
    			conn.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	conn = null;
    }
    

    2.2 JDBC操作数据库步骤:

    1. 装载驱动
    2. 与数据库建立连接(Connection)
    3. 向数据库发送SQL语句(Statement)
    4. 获得和处理查询或更新语句返回的结果
    5. 关闭连接,释放资源

    步骤图:

    Q3.PreparedStatement与参数化查询

    3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
    3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)
    参考:实验任务书-题目3

    3.1 关键代码:

    //201521123017
    String strSql = "select * from students where Id < ?";//举例,查询条件为id<10的学生信息
    pStatement = con.prepareStatement(strSql);
    pStatement.setInt(1, 10);
    rs = pStatement.executeQuery();
    while(rs.next()){	
    	System.out.println(rs.getInt("id"));
    	System.out.println(rs.getString("stuno"));
    	System.out.println(rs.getString("name"));
    	System.out.println(rs.getInt("age"));
    }
    pStatement.close();//立即释放资源
    

    3.2 关键代码:

    //201521123017			
    long t1=System.currentTimeMillis();
    //处理1000个学生信息
    for(int i=0;i<1000;i++){
    	String strSql = "insert into students(stuno,name) values(?,?)";
    	pStatement = con.prepareStatement(strSql);
    	pStatement.setString(1, "2015000");
    	pStatement.setString(2, "杰克");
    	pStatement.addBatch();//添加到同一个批处理中
    }
    long t2=System.currentTimeMillis();
    Calendar c=Calendar.getInstance();
    c.setTimeInMillis(t2-t1);
    System.out.println("耗时: " + c.get(Calendar.MINUTE) + "分 " + c.get(Calendar.SECOND) + "秒 " + c.get(Calendar.MILLISECOND) + " 微秒");
    int[] arr=pStatement.executeBatch();//执行批处理
    pStatement.executeUpdate();
    pStatement.close();//立即释放资源
    System.out.println(Arrays.toString(arr));
    
    • 运行截图:

    • 统计整个操作所消耗的时间174微秒,pStatement.executeBatch()输出1表示指示成功处理了命令,给出执行命令所影响数据库中行数的更新计数

    Q4.JDBCUtil与DAO

    4.1 粘贴一段你认为比较有价值的代码,出现学号
    4.2 使用DAO模式访问数据库有什么好处?
    参考:实验任务书-题目5

    4.1

    • 实验任务书-题目5需要编写的函数
    //201521123017
    
    //函数,遍历该List,将学生的姓名与年龄输出
    public void TdiplayAllStudent(List<Student> t) {
    	for(int i=0;i<t.size();i++){
    		System.out.println(t.get(i).toString());
    	}
    }
    
    //将List中的所有Student取出,放入Map中,其中key为学生的姓名,value为相应的学生对象
    public void MAPdiplayAllStudent(List<Student> t) {
    	Map<String,Student> map=new HashMap<String,Student>();
    	for(int i=0;i<t.size();i++){
    		map.put(t.get(i).getName(), t.get(i));
    	}
    }
    Map<String,Integer> map=new HashMap<String,Integer>();
    
    
    //将ResultSet中的学生信息,构造成一个个的Student对象,并放入List中
    @Override
    public List<Student> getAllStudents() {
    	List<Student> t=new ArrayList<>();
    	Connection conn = null;
    	Statement stat = null;
    	ResultSet rs = null;
    	String sql = "select * from student";//表中有id和name这列
    	try {
    		conn = JDBCUtil.getConnection();
    		stat = conn.createStatement();
    		rs = stat.executeQuery(sql);
    		while(rs.next()){
    			int id = rs.getInt("id");
    			String name = rs.getString("name");
    			Student student0=new Student(id,name);
    			t.add(student0);
    		}
    	}catch (SQLException sqle) {
    		sqle.printStackTrace();
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		JDBCUtil.realeaseAll(rs,stat, conn);
    	}
    	return t;
    }
    

    4.2 DAO模式的使用相当于建立一个接口,接口中定义了此应用程序中将会用到的所有方法。在程序中,当需要和数据进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口上的方法,代码之间的板块分配很清晰,而且在后期对程序的修改,只需对DAO模式中的某个方法修改即可,不需要整个项目都进行修改

    Q5.使用数据库改造购物车系统

    5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
    5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?

    5.1

    create table shop(
    name varchar(10) not null,
    price varchar(10) not null,
    num varchar(10) not null
    );
    
    • 运行截图

    • MYSql查看shop

    • 执行删除命令

    • MYSql查看shop

    5.2

    1. 操作:使用文件操作数据,需要打开文件和关闭文件,而用数据库来操作数据,只需要输入命令来实现数据的存储等功能,更加简单
    2. 查看:数据库会自动为数据添加表格,查看数据比文件观看更加直观
    3. 安全:查看数据库的数据需要有密码的输入,而文件是任何人都可以查看,比较的话,数据库更安全

    3. 码云上代码提交记录及PTA实验总结

    3.1. 码云代码提交记录

    • 在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/gemola/p/6906295.html
Copyright © 2011-2022 走看看