• <三>JDBC_面向对象思想的体现


    JDBCTools.java

    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;

    public class JDBCTools {
     
       /*
        * 执行SQL的方法
        *   insert,update,delete
        * */
       public static void update(String sql){
      
          Connection conn=null;
          Statement st=null;
      
          try {
             /*
              * 1、获取Connection连接
              * 2、获取Statement
              * 3、SQL语句
              * 4、关闭数据库连接
              *
              * */
             conn=getConnection();
             st=conn.createStatement();
             st.executeUpdate(sql);
       
       
          } catch (Exception e) {
             e.printStackTrace();
          }finally{
             release(st, conn);
          }
       }

       public static Connection getConnection() throws Exception {

          String driverClass = null;
          String jdbcUrl = null;
          String user = null;
          String password = null;

          // 读取类路径下的jdbc.properties文件
          InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");
          Properties properties = new Properties();
          properties.load(in);

          driverClass = properties.getProperty("driver");
          jdbcUrl = properties.getProperty("jdbcUrl");
          user = properties.getProperty("user");
          password = properties.getProperty("password");
          // 加载数据库驱动程序
          Class.forName(driverClass);
          // 通过DriverManager的getConnection()方法获取数据库连接
          Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
          return connection;

       }
     
       public static void release(Statement st, Connection conn) {

          if (st != null) {
             try {
                st.close();
             } catch (SQLException e) {
                e.printStackTrace();
             }
         }

          if (conn != null) {
             try {
                conn.close();
             } catch (SQLException e) {
                e.printStackTrace();
             }
          }
       }
     
       public static void release(ResultSet rs,Statement st,Connection conn){
      
          if (rs!=null) {
             try {
                rs.close();
             } catch (SQLException e) {
                e.printStackTrace();
             }
          }
      
          if (st!=null) {
             try {
                st.close();
             } catch (SQLException e) {
                e.printStackTrace();
             }
          }
      
          if (conn!=null) {
             try {
                conn.close();
             } catch (SQLException e) {
                e.printStackTrace();
             }
          }
       }
    }

    测试类:TestJDBC.java

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Scanner;

    import org.junit.Test;

    public class TestJDBC {

     @Test
     public void testGetStudent(){
      /*
       * 1、得到查询的类型
       * 2、具体查询学生信息
       * 3、打印显示信息
       * */
      int searchType=getSearchTypeFromConsole();
      Student student=searchStudent(searchType);
      
      printStudent(student);
     }
     
     private void printStudent(Student student) {
      
      if (student!=null) {
       System.out.println(student);
      }else{
       System.out.println("查无此人!");
      }
     }

     /*
      * 具体查询显示信息,返回一个Student对象,若不存在返回null
      * @param searchType:1 或2
      * @return
      * */
     private Student searchStudent(int searchType) {
      /*
       * search=1: 提示输入身份证号
       * search=2: 准考证号
       * */
      String sql="select flowid,type,idcard,examcard,studentname from "
        + "examstudent where ";
      
      Scanner sc=new Scanner(System.in);
      if (searchType==1) {
       System.out.println("请输入身份证号:");
       String examCard=sc.next();
       sql=sql+"idcard='"+examCard+"'";
       
      }else{
       System.out.println("请输入准考证号:");
       String examCard=sc.next();
       sql=sql+"examCard='"+examCard+"'";
      }
      //执行查询
      Student student=getStudent(sql);
      
      return student;
     }


     private Student getStudent(String sql) {
      
      Student stu=null;
      Connection conn=null;
      Statement st=null;
      ResultSet rs=null;
      try {
       conn=JDBCTools.getConnection();
       st=conn.createStatement();
       rs=st.executeQuery(sql);
       
       if (rs.next()) {
        stu=new Student();
        stu.setFlowID(rs.getInt(1));
        stu.setType(rs.getInt(2));
        stu.setIdCard(rs.getString(3));
        stu.setExamCard(rs.getString(4));
        stu.setStudentName(rs.getString(5));
       }
       
      } catch (Exception e) {
       e.printStackTrace();
      }finally{
       JDBCTools.release(rs, st, conn);
      }
      
      return stu;
     }

     private int getSearchTypeFromConsole() {
      /*
       * 1:用户身份证查询
       * 2:用户准考证号查询
       * */
      System.out.println("请输入查询类型:1.用身份证查询;2.用准考号查询");
      Scanner sc=new Scanner(System.in);
      int type=sc.nextInt();
      if (type!=1&&type!=2) {
       System.out.println("输入有误,请重新输入!");
       throw new RuntimeException();
      }
      return type;
     }


     public void addNewStudent(Student student){
      /*
       * 1、准备sql语句
       * 2、调用JDBCTools类的update(sql)方法执行插入操作
       * 问题:
       *   String类型的值
       * */
      String sql="insert into examstudent values ("
        + ""+student.getFlowID()+","
        +student.getType()+",'"
        +student.getIdCard()+"','"
        +student.getExamCard()+"','"
        +student.getStudentName()
        +"')";
     
      JDBCTools.update(sql);
     }
     
     @Test
     public void testAddNewStudent(){
      
      Student student=getStudentFromConsole();
      addNewStudent(student);
     }

     /*
      * 从控制台输入学生的信息
      * */
     private Student getStudentFromConsole() {
      
      Scanner sc=new Scanner(System.in);
      Student student=new Student();
      System.out.print("FlowId:");
      student.setFlowID(sc.nextInt());
      System.out.print("Type:");
      student.setType(sc.nextInt());
      System.out.print("IdCard:");
      student.setIdCard(sc.next());
      System.out.print("ExamCard:");
      student.setExamCard(sc.next());
      System.out.print("StudentName:");
      student.setStudentName(sc.next());
      
      return student;
     }
    }

  • 相关阅读:
    阿里云前端周刊
    在没有DOM操作的日子里,我是怎么熬过来的(中)
    【php学习】数组操作
    App之百度云推送
    L2-008. 最长对称子串
    整数划分问题之递归法
    分治法之归并排序(递归+分治)
    L2-005. 集合相似度
    分治法之棋盘覆盖问题
    L2-003. 月饼
  • 原文地址:https://www.cnblogs.com/iamkk/p/6059390.html
Copyright © 2020-2023  润新知