JDBC高级操作

1 一个类操作单表的增删改查

2 三层架构来构建程序,实现单表的操作

思路:三层架构(数据访问层、业务逻辑层、界面层)JDBC操作单表数据维护的实现:

1 创建数据库school及表student

2 创建三个层次的包:

cn.sdut.dao——放置数据访问层的类和接口
cn.sdut.biz——放置业务逻辑层的类和接口
cn.sdut.view——放置界面层的类和接口

3 创建cn.sdut.po包,里面放置Student.java类——JavaBean

4 各层次的程序代码:

(1)数据访问层:(cn.sdut.dao)
BaseDao.java——各种公共变量、数据库的连接和各种公共变量的关闭方法
StudentDao.java——学生表数据的增、删、改、查方法
(2)业务逻辑层:(cn.sdut.biz)
(3)界面层:(cn.sdut.view)
Main.java——测试

参考代码:

1 创建数据库school及表student

2 创建三个层次的包:

cn.sdut.dao——放置数据访问层的类和接口
cn.sdut.biz——放置业务逻辑层的类和接口
cn.sdut.view——放置界面层的类和接口

3 创建cn.sdut.po包,里面放置Student.java类——JavaBean

public class Student {
         private int id;
         private String name;
         private String birthday;
         private float score;
         public int getId() {
                   return id;
         }
         public void setId(int id) {
                   this.id = id;
         }
         public String getName() {
                   return name;
         }
         public void setName(String name) {
                   this.name = name;
         }
         public String getBirthday() {
                   return birthday;
         }
         public void setBirthday(String birthday) {
                   this.birthday = birthday;
         }
         public float getScore() {
                   return score;
         }
         public void setScore(float score) {
                   this.score = score;
         }
         @Override
         public String toString() {
                   return "Student [id=" + id + ", name=" + name + ", birthday="
                                     + birthday + ", score=" + score + "]";
         }
}

4 各层次的程序代码:

(1)数据访问层:(cn.sdut.dao)

BaseDao.java——各种公共变量、数据库的连接和各种公共变量的关闭方法

public class BaseDao {
         Connection con;
         PreparedStatement pst;
         ResultSet rs;

         public Connection getConnection() {
                   try {
                            Class.forName("com.mysql.jdbc.Driver");
                            String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8";
                            con = DriverManager.getConnection(url, "root", "usbw");
                   } catch (ClassNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                   } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                   }
                   return con;
         }

         public void closeAll() {
                   try {
                            if (rs != null) {
                                     rs.close();
                            }
                            if (pst != null) {
                                     pst.close();
                            }
                            if (con != null) {
                                     con.close();
                            }
                   } catch (Exception e) {
                            e.printStackTrace();
                   }
         }

}

StudentDao.java——学生表数据的增、删、改、查方法

public class StudentDao extends BaseDao{

         public int add(Student student) {
                   // 增加记录
                   int result = 0;
                   con = getConnection();
                   String insertSql = "insert into student(name,birthday,score) values(?,?,?)";
                   try {
                            pst = con.prepareStatement(insertSql);
                            pst.setString(1, student.getName());
                            pst.setString(2, student.getBirthday());
                            pst.setFloat(3, student.getScore());

                            result = pst.executeUpdate();
                   } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                   } finally {
                            closeAll();

                   }
                   return result;
         }

         public int del(int id) {
                   con = getConnection();
                   int result = 0;
                   // 删除记录
                   String deleteSql = "delete from student where id=?";
                   try {
                            pst = con.prepareStatement(deleteSql);
                            pst.setInt(1, id);
                            result = pst.executeUpdate();
                   } catch (Exception e) {
                            e.printStackTrace();
                  } finally {
                            closeAll();
                   }
                   return result;
         }
         public int update() {
                   return 0;
         }

         public int update(Student student) {
                   // 增加记录
                   int result = 0;
                   con = getConnection();
                   String updateSql = "update student set name=?,birthday=?,score=? where id=? ";
                   try {
                            pst = con.prepareStatement(insertSql);
                            pst.setString(1, student.getName());
                            pst.setString(2, student.getBirthday());
                            pst.setFloat(3, student.getScore());
                            pst.setInt(4,student.getId());
                            result = pst.executeUpdate();
                   } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                   } finally {
                            closeAll();

                   }
                   return result;
         }


         public List<Student> queryAll() {
                   List<Student> students=new ArrayList<Student>();      
                   con = getConnection();
                   // 查询记录
                   String querySql = "select * from student";
                   try {
                            pst = con.prepareStatement(querySql);

                            ResultSet rs = pst.executeQuery();
                            //System.out.println(rs);
                            while (rs.next()) {
                                     Student stu=new Student();
                                     int id = rs.getInt("id");
                                     String name = rs.getString(2);
                                     String birthday = rs.getString(3);
                                     float score = rs.getFloat(4);
                                     stu.setId(id);
                                     stu.setName(name);
                                     stu.setBirthday(birthday);
                                     stu.setScore(score);
                                     students.add(stu);
                            }
                   } catch (Exception e) {
                            e.printStackTrace();
                   } finally {
                            closeAll();

                   }
                   return students;
         }

}

(2)业务逻辑层:(cn.sdut.biz)

因业务简单,省略。

(3)界面层:(cn.sdut.view)

Main.java——测试

public class Main {

         public static void main(String[] args) {
                   StudentDao studentDao=new StudentDao();

                   Student student=new Student();
                   student.setName("777");
                   student.setBirthday("2012-3-3");
                   student.setScore(22);
                   //studentDao.add(student);  //增加1名学生,信息如上

                   //studentDao.del(6); //删除id=6的学生

                   student.setId(1);
                   student.setName(“王五”);
                   student.setBirthday(“1988-2-2”);
                   student.setScore(88);
                   studentDao.update(student); //将id为1的记录姓名、出生日期和成绩均修改
                   List<Student> students=studentDao.queryAll(); //查询所有学生
                   for(Student stu:students)
                   {
                      System.out.println(stu);   
                   }
         }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值