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);
}
}
}
网友评论