201521145042《Java程序设计》第14周学习总结

MySql操作视频与数据库相关jar文件请参考QQ群文件。
本次作业参考文件
数据库PPT
0. 本周课程设计发布
Java课程设计
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。
2. 书面作业
- 1. MySQL数据库基本操作- 建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名) - 在自己建立的数据库上执行常见SQL语句(截图) - -参考:实验任务书-题目1 - 建立数据库和表: - 插入信息: - 显示全部信息: 
- 2. 使用JDBC连接数据库与Statement- 2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)- 连接test数据库: - //201521123042- Connection con = null; - Statement stmt = null; - ResultSet rs = null; - String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"; - String userName = "root"; - String password = "123456"; - String driverName = "com.mysql.jdbc.Driver"; - Class.forName(driverName); - con = DriverManager.getConnection(url, userName, password); - 插入学生信息: - String strSql = "insert into students(stuno,name,age,birthdate,major) values('2015050', '小红', 20,'1997-11-06','cs')";- stmt = con.createStatement(); - resultNum = stmt.executeUpdate(strSql); - System.out.println(resultNum + "条记录已经插入"); 
删除学生信息:	strSql = "delete from students where id='2'";// 删除id=2的数据
    resultNum = stmt.executeUpdate(strSql);
    System.out.println(resultNum + "条记录删除完毕");
更改学生信息:	 strSql = "update students set major='中文' where id='1'";
     resultNum = stmt.executeUpdate(strSql);
     System.out.println(resultNum + "条记录更新完毕");	
选择性的输出学生信息:	 strSql = "select stuno,name,birthdate,major from students";
     rs = stmt.executeQuery(strSql);
     System.out.println("学号\t\t姓名\t出生日期\t\t专业");
     while (rs.next()) {
            System.out.print(rs.getString("stuno") + "\t\t");
            System.out.print(rs.getString(2) + "  \t");
            System.out.print(rs.getDate("birthdate") + "\t");
            System.out.print(rs.getString(4) + "\t\n");
        }
######2.2 使用JDBC操作数据库主要包含哪几个步骤?
>1.注册驱动
>2.创建连接
>3.通过连接创建语句
>4.通过语句获得结果集
>5.处理结果集
>6.释放资源
**-参考:实验任务书-题目2**
- 3. PreparedStatement与参数化查询- 3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)- 查询ID=16的学生信息 - //201521123042- strSql = "select * from students where Id = ?"; - pStatement = con.prepareStatement(strSql); - pStatement.setInt(1, 16); - rs = pStatement.executeQuery(); 
查询ID小于5的所有学生信息		strSql = "select * from students where Id < ?";
		pStatement = con.prepareStatement(strSql);
		pStatement.setInt(1, 5);
		rs = pStatement.executeQuery();
######3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)            //201521123042
	long start=System.currentTimeMillis();
		for(int i=0;i<1000;i++){
			pStatement.setInt(1, i);
			pStatement.setString(2, "周迅");
			pStatement.setInt(3, 18);
			pStatement.setString(4, hmFromat.format(new Date()));
			pStatement.setString(5, "电气工程");
			pStatement.addBatch();
		}
		pStatement.executeBatch();
		long finish=System.currentTimeMillis();
		System.out.println("用时" +(finish-start));
**参考:实验任务书-题目3**- 4. JDBCUtil与DAO- 4.1 粘贴一段你认为比较有价值的代码,出现学号- 增加学生信息: - //201521123042- public int add(Student stu) { - Connection conn = null; - PreparedStatement pst = null; - String sql= "insert into students(id,name) values(?,?)"; - int result=-1; - try{ - conn = JDBCUtil.getConnection(); - pst=conn.prepareStatement(sql); - pst.setInt(1,stu.getId()); - pst.setString(2, stu.getName()); - result=pst.executeUpdate(); - }catch (SQLException sqle) { - sqle.printStackTrace(); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(null,pst, conn); - } - return result>0?1:-1; - } - 删除学生信息: - public int delete(int sid) {- Connection conn = null; - PreparedStatement pst = null; - int result=-1; - String strSql = "delete from students where id = ?"; - try { - conn = JDBCUtil.getConnection(); - pst = conn.prepareStatement(strSql); - //连接数据库 - pst.setInt(1, sid); - result = pst.executeUpdate(); - //显式释放资源 - pst.close(); - }catch (SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(null, pst, conn); - } - return result>0?1:-1; - } - 更新学生信息: - public int update(Student stu) {- Connection conn = null; - PreparedStatement pst = null; - String strSql = "update students set name = ? where Id = ?"; - int result=-1; - try{ - conn = JDBCUtil.getConnection(); - pst = conn.prepareStatement(strSql); - pst.setInt(2, stu.getId()); - pst.setString(1, stu.getName()); - result= pst.executeUpdate(); - }catch (SQLException sqle) { - sqle.printStackTrace(); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(null,pst, conn); - } - return result>0?1:-1; - } - 显示所有学生信息,以及按条件查询: - public List<Student> findAll() {- Connection conn = null; - Statement stat = null; - ResultSet rs = null; - Student stu=null; - List<Student> students=new ArrayList<Student>(); - String sql = "select * from student";//表中有id和name这列 - try { - conn = JDBCUtil.getConnection(); - stat = conn.createStatement(); - rs = stat.executeQuery(sql); - while(rs.next()){ - stu=new Student(rs.getInt("id"),rs.getString("name")); - students.add(stu); - } - }catch (SQLException sqle) { - sqle.printStackTrace(); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(rs,stat, conn); - } - return students; - } - public Student findById(int id) { - ResultSet rs = null; - Connection conn = null; - Student stu = new Student(); - PreparedStatement pst = null; - String strSql = "select * from students where Id = ?"; - try{ - conn = JDBCUtil.getConnection(); - pst=conn.prepareStatement(strSql); - pst.setInt(1, id); - rs = pst.executeQuery(); - while(rs.next()){ - stu = new Student( rs.getInt("id"), rs.getString("name")); - } - }catch (SQLException sqle) { - sqle.printStackTrace(); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(rs,pst, conn); - } - return stu; - } - public List<Student> findByName(String name){ - Connection conn = null; - PreparedStatement pstat = null; - ResultSet rs = null; - String sql = "select * from student where name like ?";//表中有id和name这列 - Student student = null; - List<Student> students=new ArrayList<Student>(); - try { - conn = JDBCUtil.getConnection(); - pstat = conn.prepareStatement(sql); - pstat.setString(1, name); - rs = pstat.executeQuery(); - while(rs.next()){ - int stuId = rs.getInt("id"); - String stuName = rs.getString("name"); - student = new Student(stuId, stuName); - students.add(student); - } - }catch (SQLException sqle) { - sqle.printStackTrace(); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(rs,pstat, conn); - } - return students; - } - 编写一个函数将List中的所有Student取出,放入Map中,其中key为学生的姓名,value为相应的学生对象。 - public Map<String,Student>showAllinMap(List<Student> students){- Map<String,Student> map=new HashMap<String,Student>(); - for(Student e:students){ - System.out.println(e.toString()); - map.put(e.getName(), e); - } - return map; - } - 4.2 使用DAO模式访问数据库有什么好处?- DAO使程序层次分明,把对数据库的操作都放在这一层,这样其他层的逻辑控制就变得清晰明了了。 - 对于实现业务逻辑而言,DAO层是基石。 - 而且分层后DAO的代码维护与变更等也变得清晰可理解。 
 参考:实验任务书-题目5
- 5. 使用数据库改造购物车系统- 5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。- 先在数据库里存放几本书的信息: - 查询所需书籍: - private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {- Connection conn = null; - Statement stat = null; - ResultSet rs = null; - PreparedStatement pstat = null; - String sql = "select * from student where name like ?";//表中有id和name这列 - try { - conn = JDBCUtil.getConnection(); - pstat = conn.prepareStatement(sql); - pstat.setString(1, name); - rs = pstat.executeQuery(); - while(rs.next()){ - jLabel6.setText(""+rs.getString("name")); - jLabel7.setText(""+rs.getDouble("price")); - jLabel8.setText(""+rs.getInt("num")); - } - }catch (SQLException sqle) { - sqle.printStackTrace(); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - JDBCUtil.realeaseAll(rs,pstat, conn); - } - } 
加入购物车:	//201521123042
	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
	   		 Connection conn = null;
	    	PreparedStatement pstat = null;
			int result;
	String sql = "insert into ShoppingCart(name,price,num) values(?,?,?) ";//表中有id和name这列
	try {
		conn = JDBCUtil.getConnection();
		pstat = conn.prepareStatement(sql);
		pstat.setString(1, jLabel6.getText());
	             pstat.setDouble(1, Double.parseDouble(jLabel7.getText()));
	             pstat.setInt(1, Integer.parseInt(jLabel8.getText()));
		result = pstat.executeUpdate();
	}catch (SQLException sqle) {
		sqle.printStackTrace();
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		JDBCUtil.realeaseAll(null,pstat, conn);
	}
  
######5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
>①数据库效率高。利用数据库存储访问修改数据比较方便.所有关系型数据库都可以用sql(结构化查询语言)操作数据库;数据库在数据写入读取上做了优化,文本的没有,数据少时执行速度可能看不出区别,但是一旦数据成千上万,那么效率就很明显了。
>②在非数据库系统中,每个应用程序都有自己的专用文件,浪费存储空间。利用数据库可以解决这个问题.
3. 码云
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
4.课外阅读
JDBC(TM) Database Access
代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分
mysq数据库管理工具navicat基本使用方法
以上是 201521145042《Java程序设计》第14周学习总结 的全部内容, 来源链接: utcz.com/z/394006.html








