JAVA第八次作业

《Java技术》第八次作业

(一)学习总结

1.用思维导图对本周的学习内容进行总结。

  • 参考资料: XMind

2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。

  • 对于需要执行动态的SQL语句经常使用PreparedStatement对象操作,以提高效率:
    executeQuery()方法:

      //获取所有数据
      public ArrayList<PetItem> queryAllData(){
      	Connection conn = null;//数据库连接
      	Statement stmt = null;//数据库操作
      	ResultSet rs = null;
      	ArrayList<PetItem> list = new ArrayList<PetItem>();
      	try{
      		conn = JDBCUtils.getConnection(1);
      		stmt = conn.createStatement();
      		String sql = "select number,name,price,age,num from pet";
      		rs = stmt.executeQuery(sql);
      		while(rs.next()){
      			PetItem thisPet = new PetItem();
      			thisPet.setNumber(rs.getString("number"));
      			thisPet.setName(rs.getString("name"));
      			thisPet.setPrice(rs.getDouble("price"));
      			thisPet.setAge(rs.getString("age"));
      			thisPet.setNum(rs.getString("num"));
      			list.add(thisPet);				
      		}
      		return list;
      	}catch(Exception e ){
      		e.printStackTrace();
      	}finally{
      		JDBCUtils.close(conn);
      	}
      	return null;
      }
    

executeUpdate()方法:

    	//删除数据
	public boolean delPetItem(String delNumber){
		boolean result=false;
		Connection conn = null;
		PreparedStatement pstmt = null;	
		try{
			conn = JDBCUtils.getConnection(1);
			String  sql="delete from pet where number=?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, delNumber);
			if(pstmt.executeUpdate()>0){
				result = true;
			}					
		}catch(Exception e ){
			e.printStackTrace();
		}finally{
			JDBCUtils.close(conn);
		}	
		return result;
	}	
  • 区别:
    (1)PreparedStatement接口:PreparedStatement是Statement的子接口,属于预处理操作,可多次执行,提供效率。使用Connection对象的prepareStatement()方法创建一个preparedStatement对象用于执行SQL语句。SQL语句用“?”作为所有动态参数的占位符,先进行预编译,当给占位符所在的变量赋值后,再执行该SQL语句。
    (2)Statement接口:在一个给定的连接中执行SQL语句,获取执行后返回的结果。
    Statement对象执行SQL语句有两种情况:一种是数据定义和更新语句,如CREATE、DELETE、UPDATE和INSERT等语句,使用Statement对象的executeUpdate方法执行;一种是数据查询语句,如SELECT语句,使用Statement对象的executeQuery 方法执行;

(二)实验总结

1.实验内容:
使用JDBC实现实验七的宠物商店完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。

  • 类图:

  • 程序设计思路:设计JDBCUtils类,通过JDBC连接数据库,重新设计AdminDao类,使用Statement和PreparedStatement完成数据的获取、增加、修改和删除操作。

  • 实验问题分析:
    问题1:在进入第三个界面时,出现错误 。
    原因:没有连接到数据库,没有引入sqljdbc4包。
    解决方案:引入sqljdbc4包。
    步骤:右击创建的JAVA工程,找到Build path ,选择 Add External Archives,找到要导入的包,点击打开就可以引入了。
    问题2:如何进行修改操作。
    解决方案:先将输入的编号的那组数据删除,再将输入的新的内容插入。

     try{
     			conn = JDBCUtils.getConnection(1);
     			String  sql="delete from pet where number=?";
     			pstmt = conn.prepareStatement(sql);
     			pstmt.setString(1, delNumber);
        			if(pstmt.executeUpdate()>0){
     				result = true;
     			}					
     		}catch(Exception e ){
     			e.printStackTrace();
     		}finally{
     			JDBCUtils.close(conn);
     		}
     		try{
     			conn = JDBCUtils.getConnection(1);
     			String sql = "insert into pet (number,name,price,age,num) values (?,?,?,?,?)";
     			pstmt = conn.prepareStatement(sql);
     			pstmt.setString(1,pet.getNumber());
     			pstmt.setString(2,pet.getName());
     			pstmt.setDouble(3,pet.getPrice());
     			pstmt.setString(4,pet.getAge());
     			pstmt.setString(5,pet.getNum());
     			int num = pstmt.executeUpdate();
     			if(num > 0){
     				result = true;
     			}
     		}
     			catch(Exception e ){
     				e.printStackTrace();
     			}finally{
     				JDBCUtils.close(conn);
     			}	
    

(三)代码托管

  • 码云commit历史截图
posted @ 2017-05-17 19:04  luhan1  阅读(148)  评论(0编辑  收藏  举报