jdbc demo 03 2021-01-01

2021-01-01  本文已影响0人  Gyalsten

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);
    }
}

}

上一篇 下一篇

猜你喜欢

热点阅读