• 二阶段项目总结


    1.如果要定义一个数据过滤的功能,比如说向表内添加数据,但这条数据内的某个字段值重复,这种方法可以在DAO层内用SQL语句来实现如果用纯逻辑判断来筛选,效率过低而且容易犯错。

    另外,比较字符串是否相同要用equals方法!

    2.使用标签功能可打断指定循环,例如

    public Test{
      public void test(){
          int a= 10;
          loop1:
          while(a>0){
             a--;
             while(a<=2){
                break loop1;
             }
         } 
      }  
    }

    3.利用try catch可以使得错误不打断程序继续运行,同时可以给用户返回指定信息

    public void searchCase() {
        try {
        System.out.println("输入开始时间,年月日以横短杠分隔:");
        String start = sc.next();
        System.out.println("输入结束时间,年月日以横短杠分隔:");
        String end = sc.next();
        ArrayList<AccountBook> list = accountBookController.searchAccountBook();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date s = sdf.parse(start);
        Date e = sdf.parse(end);
        System.out.println("序号	收入类型	支出类型	支付类型	金额			建立时间		备注");
        for(int i=0;i<list.size();i++) {
            Date c = sdf.parse(list.get(i).getCreatetime());
            if(c.getTime()>=s.getTime()&c.getTime()<=e.getTime()) {
                     System.out.printf("%d	%d		%d		%d		%f	%s	%s 
    ",
                    list.get(i).getAid(),list.get(i).getGet(),list.get(i).getPay(),list.get(i).getAccount(),
                    list.get(i).getCost(),list.get(i).getCreatetime(),list.get(i).getDescription());    
            }        
         }          
        } catch (ParseException e) {
          System.out.println("日期格式输入错误!");
        }
    }

    在上例的代码中,如果用户输入的的日期不符合定义的格式,不会报ParseException错误,会打印日期格式输入错误!

    另外,这种处理方式也可以用在Scanner中,如果应当输入的是个数字,而用户输入的是字符串,正常会报InputMismatchException错误

    但我们可在catch块里自定义输出一条语句,保证不报错,不打断程序的运行,例如如下代码:

     public void deleteAccountBook() {
             while(true) {
                 try {
                     Scanner s = new Scanner(System.in);
                     System.out.println("输入要删除账务的ID:");
                     searchAll();
                     System.out.println("请输入:");
                     int aid = s.nextInt();//如果这里用户输入的是字符串
                     AccountBook  accountBook = new  AccountBook();
                     accountBook.setAid(aid);
                     if(accountBookController.accountBookCheckID(accountBook)) {
                     }else {
                         System.out.println("该ID不存在!");
                         continue;
                     }
                     accountBookController.deleteAccountBook(accountBook);
                     return;
                } catch (InputMismatchException e) {
                    System.out.println("请输入一个数字!");//则会打印该语句
    //同时注意,这个try catch是在while循环内的,不会打断循环 } } }

    3.resultset的next方法问题:

    如果用同一个resultset的next方法进行两个while循环,则第二个while循环只能从最后一个resultset对象开始,

    因为第一个while循环结束后,指针已经移动到最后一个,第二个while循环会从这里开始。

    4.MySQL查询以及修改问题:

    如果在MySQL内,一个数字类型字段没有赋值,即为null,如果在java中用arraylist返回对象后,读取该对象对应的数值型的成员变量值,

    则该值为零。比如说MySQL有这样一条数据: id 1 (收入类型)get NULL (支出类型)pay 2 那么在JAVA内输出时,对象.getGet()的值是0。

    注意,如果是在resultset内用getString方法,则得到的就是NULL。

    注意:

    在添加、修改有外键约束的数值时,例如该表参考的外键值只有1-7,但是你想让对应值是NULL,那就要用setString,而不要用setInt,对应值为NULL

    public int updateAccountBook(AccountBook accountBook) {
            try {
                Connection conn = DButil.getConn();
                String sql = "update accountbook set get=?,pay=?,account=?,cost=?,createtime=?,description=? "
                        + "where aid =?";
                PreparedStatement ps = conn.prepareStatement(sql);
                if(accountBook.getGet()==0) {
                    ps.setString(1, null);//外键约束,不能直接填0
                }else {
                    ps.setInt(1, accountBook.getGet());
                }
                if(accountBook.getPay()==0){
                    ps.setString(2, null);
                }else {
                    ps.setInt(2, accountBook.getPay());
                }
                ps.setInt(3,accountBook.getAccount());
                ps.setDouble(4, accountBook.getCost());
                ps.setString(5, accountBook.getCreatetime());
                ps.setString(6, accountBook.getDescription());
                ps.setInt(7, accountBook.getAid());
                int r = ps.executeUpdate();
                DButil.close( ps, conn);
                return r;
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException("修改数据失败"+e);
            }
        }

    5.MySQL DATE数据问题:

    MySQL内的DATE类型字段在JAVA内读取时,如果在MySQL是用yyyy-mm-dd格式添加的值,在JAVA内用getString或者getDate得到的都一个

    yyyy-mm-dd这样格式的值,如果要向表里添加Date类型的值,可以用setString直接添加。

    6.其他应注意的报错:

     

    另外,如果一个while一直循环,也会出现这种情况。

  • 相关阅读:
    postman 安装,配置,鉴权
    monkey操作,获取包名,参数,日志,百分比
    monkey环境搭建
    postman接口测试&压力测试
    Fiddler介绍(PC端+Android,IOS端,弱网)
    软件测试的环境搭建
    python2.x- selenium-robot framework自动化测试环境搭建
    SVN的简单操作,版本控制
    svn介绍和安装
    js 函数和函数的参数
  • 原文地址:https://www.cnblogs.com/whwjava/p/8849330.html
Copyright © 2020-2023  润新知