美文网首页
jdbc demo 03 2021-01-01

jdbc demo 03 2021-01-01

作者: Gyalsten | 来源:发表于2021-01-01 04:13 被阅读0次

    jdbc demo 03

    propertiles的使用
    db.properties 是一个map 「键 值 对」里面只有String,db.properties 必须放在SRC下而不是包下面除非会报空指针异常

    db.properties 的内容为以下 「键 值 对」的map
    jdbc.className = com.mysql.cj.jdbc.Driver
    jdbc.url = jdbc:mysql://localhost:3306/demo01
    jdbc.user = root
    jdbc.password = zhaxi2727

    读取并加载该文件需要
    一、 properties对象创建
    二、创建流 来读取 inputstream in =该类.class.getclassloder()..getResourceAsStream("db.properties") ;
    三、properties对象.lode() 来获取 db.properties 「键值对」 值
    四、properties对象.getproperty("键") ;

    代码列子

                    db.properties 文件内容
    

    jdbc.className = com.mysql.cj.jdbc.Driver
    jdbc.url = jdbc:mysql://localhost:3306/demo01
    jdbc.user = root
    jdbc.password = zhaxi2727


    package demo03;

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

    //封装类
    public class DbUtils {

    //读取配置文件参数
    //静态属性 className url user password 
    static String className = "com.mysql.cj.jdbc.Driver" ;
    static String url = "jdbc:mysql://localhost:3306/demo01";
    static String user = "root" ;
    static String password = "zhaxi2727" ;
    
    //静态方法中完成读取代码 此类一执行 静态快一块执行 切执行次
    //得到 String的properties里的map键和值
    //连接的数据库  数据库的用户名  密码 此三个需要连接数据库时候需要的
    //使用propertoes读取数据 调用即刻 方便操作
    //static 静态快的使用 类加载一块执行一次
    static{
        //获取properties对象
        Properties pro = new Properties() ;
        //把配置文件转成流进行 读取db.properties文件
        InputStream isStream = DbUtils.class.getClassLoader().getResourceAsStream("db.properties") ;
        try {
            //读取流
            pro.load(isStream);
            className = pro.getProperty("jdbc.className") ;
            url = pro.getProperty("jdbc.url") ;
            user = pro.getProperty("jdbc.user") ;
            password = pro.getProperty("jdbc.password") ;           
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //获得连接对象的 封装方法
    //异常抛给调用该方法 应该该方法使用完后需要关闭 con资源 
    public static Connection getConnection() throws Exception{
        //注册驱动
        Class.forName(className) ;
        //获得连接对象
        Connection con = DriverManager.getConnection
                (url,user,password) ;
        return con ;
    }
    //关闭连接资源 封装方法
    //异常无需抛给调用的方法 因为表用者 无需try cath里再操作
    public static void closeConnection(Connection con){
        try {
            con.close() ;
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    

    }

    //测试运行类
    package demo03;

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

    public class TestDemo {

    public static void main(String[] args) {
        //资源使用完需要关闭 因此该属性设为全局
        Connection con = null ;
        try {
            //注册驱动及获得连接对象
             con = DbUtils.getConnection() ;
             //获得sattement对象 statement来操作sql语句
             Statement sta = con.createStatement() ;
             //sal语句
             String sql = "select 'hello' from dual" ;
             //执行sql语句 
             ResultSet rs = sta.executeQuery(sql) ;
             //得到数据里表里的 数据 跌倒取出 结果集
             while(rs.next()){
                 String sq = rs.getString(1) ;
                 System.out.println(sq);
             }
             rs.close() ;
             sta.close() ;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            DbUtils.closeConnection(con);
        }
    }
    

    }

    相关文章

      网友评论

          本文标题:jdbc demo 03 2021-01-01

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