JAVA第八次作业

《Java技术》第八次作业

(一)学习总结

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

  • 参考资料: XMind

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

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

    //获取所有数据
    public ArrayList queryAllData(){
    Connection conn = null;//数据库连接
    Statement stmt = null;//数据库操作
    ResultSet rs = null;
    ArrayList list = new ArrayList();
    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  阅读(174)  评论(0)    收藏  举报