某些规范化操作

运用配置文件数据更新数据

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

![配置文件](http://upload-images.jianshu.io/upload_images/66256-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();
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容