某些规范化操作

作者: itachi | 来源:发表于2016-11-19 12:27 被阅读27次
运用配置文件数据更新数据

右键src新建配置文件,在配置文件中配置key和value如图所示:

![配置文件](http:https://img.haomeiwen.com/i66256/32918f35c193739a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在Java中编写properties测试类,用于测试配置文件是否正确

mport java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/*
 * 读取配置文件
 * 通过properties类操作配置文件
 */

public class TestProperties {
    public static void main(String[] args) throws Exception {
        Properties prop=new Properties();
        InputStream is=TestProperties.class.getClassLoader().getResourceAsStream("db.properties");
        /*
         * load()通过输入流读取配置文件,将配置文件
         * 以key-value的方式保存到prop对象中
         * 作用:加载配合文件中的数据到prop对象中
         */
        prop.load(is);
        //获取key为url的值
        String url=prop.getProperty("url");
        System.out.println(url);
        
    }

}

为了方便以后书写,编写JDBC工具类,里面包含方法,在以后的程序编写中可以很好的调用,减少代码的重用率

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

/*
 * JDBC 工具类
 * JDBC中重复操作
 * 加载驱动
 * 创建链接
 * 关闭链接
 */

public class JdbcUtil {
    //构造方法私有,是为了防止外界改变属值
    private JdbcUtil(){}
    private static String driverName=null;
    private static String url=null;
    private static String userName=null;
    private static String password=null;
    
    static{
        try {
            Properties prop=new Properties();
            //加载配置文件,配置文件一般放在src下
            prop.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
            driverName=prop.getProperty("driverName");
            url=prop.getProperty("url");
            userName=prop.getProperty("userName");
            password=prop.getProperty("password");
            Class.forName(driverName);
        } catch (IOException e) {
            e.printStackTrace();
            /*
             * 此处抛出异常是为了让调用者知道发生了异常,程序终止,修改代码
             * 此处抛出一个运行时异常,也可以抛出一个检查事异常
             * 但是这样就要求抛出的异常做出处理,代码也就不那么简介了
             * 同时,若本类实现了某个接口,那么在重写方法时,方法上能
             * 不能按此方法抛出一个检查时异常,要看接口中有没有抛出一样的异常(子类异常不能比父类异常大)
             * 运行时异常不存在这个问题
             */
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        
    }
    
    //创建链接
    public static Connection getConnection() throws SQLException{
        Connection conn=DriverManager.getConnection(url, userName, password);
        return conn;
    }
    
    /*
     * 释放资源,关闭链接
     * 需要关闭的资源,按照顺序是 ResultSet,Statement,Connection
     */
    
    public static void close (ResultSet rs, Statement stmt,Connection conn){
        //一旦第一个出现异常,则后面两个会无法关闭,要捕获后使用finally
        //下面为经典代码,应该记住
            try {
                if(rs!=null){
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }finally{
                    try {
                        if(stmt!=null){
                            stmt.close();
                        }
                    } catch (SQLException e) {
                        e.printStackTrace();
                        throw new RuntimeException(e);
                    }finally{
                            try {
                                if (conn!=null){
                                    conn.close();
                                }
                            } catch (SQLException e) {
                                e.printStackTrace();
                                throw new RuntimeException(e);
                            }
                    }
        }
    
    }
    
}

编写测试

public class EmpDaoTest {
    public static void findAll(){
        String sql="select * from emp";
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        try {
            conn=JdbcUtil.getConnection();
            stmt=conn.createStatement();
            rs=stmt.executeQuery(sql);
            while(rs.next()){
                int empno=rs.getInt("empno");
                String ename=rs.getString("ename");
                //java.sql.date是Java.Util.date的子类
                Date date=rs.getDate("hiredate");
                double sal=rs.getDouble("sal");
                int deptno=rs.getInt("sal");
                System.out.println(empno+"\t"+ename+"\t"+date+"\t"+sal+"\t"+deptno);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }finally{
            JdbcUtil.close(rs, stmt, conn);
        }
        
    }
    
    public static void main(String[] args) {
        findAll();
    }

}

相关文章

  • 某些规范化操作

    运用配置文件数据更新数据 右键src新建配置文件,在配置文件中配置key和value如图所示: 在Java中编写p...

  • 催乳师(6-3)

    催乳师规范化技能操作 操作要点 1、初步评估:产妇症状、产妇生产时间、分方式、喂养情况 2、准备 (1)催乳师自身...

  • 某些MySQL的基本操作

    备份数据库到本地,文件名加日期◇: mysqldump -u wcnc -p smgp_apps_wcnc > w...

  • 阳光课堂主讲教师教学操作规范

    为保障阳光课堂教学应用更加常态化、规范化,特制定以下阳光课堂主讲教师教学操作规范。 一、课前设备操作步骤 1.主讲...

  • 2022外科住院医师结业考试技能操作视频

    【03】操作相关视频 住院医师规范化培训结业技能考核:体表肿物切除术[https://www.bilibili.c...

  • 关于实验室规范化管理的知识

    一、实验室规范化管理基本要求 ⑴ 建立严格的实验室管理制度,明确责任和要求,防止操作人员违规操作; ⑵ 保持实验室...

  • BI-SQL丨Drop & Alter

    Drop & Alter Drop,撤销操作;Alter,更新操作。 在PowerBI中,如果我们针对某些数据清洗...

  • Ionic Cordova实现软键盘的监听 以及操作大全

    今天在做项目的时候,在键盘显示的时候隐藏某些操作,键盘隐藏的时候,打开某些操作。网上找了很久,才找到具体的监听事件...

  • 如何建立实验室管理体系?

    1.实验室规范化管理基本要求 ⑴ 建立严格的实验室管理制度,明确责任和要求,防止操作人员违规操作; ⑵ 保持实验室...

  • 026_ReactNative: Upgrading

    Upgrading 升级 升级RN 某些版本升级需要手动操作

网友评论

    本文标题:某些规范化操作

    本文链接:https://www.haomeiwen.com/subject/tncspttx.html