综合DDL,DML,DQL的连接数据库的语句,我们要从中抽象出共同的方法来创建一个连接管理方法。
该方法仅仅适用于单线程的情况下使用!
创建一个工具类(Dbutils.java):
package cn.tedu.jdbc.day01;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class DbUtils {
//改成静态变量,在方法区中只存储一份变量,是所有对象
//共有的。
//目前还有一个问题,就是数据库的数据不能写死,需要弄一个配置文件
static String driver;
static String url;
static String username;
static String password;
//读取文件中的数据库连接参数(消除软件中的硬编码)
//把四个参数写到文件中去(一般我们习惯把配置文件放到resource中去
//创建db.properties,java中用的扩展名,尾部不能有空格分号。)
//一句话将db.properties读成map,
//读取文件中的数据库连接参数
static {
try {
//初始化静态属性
//1.利用Properties读取配置文件
Properties cfg = new Properties();
//2.从配置文件中查找相应参数值
InputStream in = DbUtils.class.
getClassLoader().getResourceAsStream("db.properties");
cfg.load(in);
System.out.println(cfg);
//初始化连接参数
driver = cfg.getProperty("jdbc.driver");
url = cfg.getProperty("jdbc.url");
username = cfg.getProperty("jdbc.username");
password = cfg.getProperty("jdbc.password");
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
//DbUtils.java
/*
* 严格的关闭数据库的方法
* 关闭数据库的连接方法,封装复杂的关闭过程
*/
public static void close(Connection conn) {
if(conn!=null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 封装创建数据库连接的过程
* 简化数据库连接
* @return
* @throws
*
* 写成当前这个样子是有点缺点的
*/
public static Connection getConnection(){
/* //调一次方法创建4个变量,很浪费
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String user = "zqk";
String password = "zqk123";*/
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,username,password);
return conn;
}catch(Exception e) {
e.printStackTrace();
//数据库连接不上得到一个异常,对调用者负责
throw new RuntimeException(e);
}
}
}
//改成静态变量,在方法区中只存储一份变量,是所有对象
//共有的。
//目前还有一个问题,就是数据库的数据不能写死,需要弄一个配置文件
static String driver;
static String url;
static String username;
static String password;
//读取文件中的数据库连接参数(消除软件中的硬编码)
//把四个参数写到文件中去(一般我们习惯把配置文件放到resource中去
//创建db.properties,java中用的扩展名,尾部不能有空格分号。)
//一句话将db.properties读成map,
//读取文件中的数据库连接参数
static {
try {
//初始化静态属性
//1.利用Properties读取配置文件
Properties cfg = new Properties();
//2.从配置文件中查找相应参数值
InputStream in = DbUtils.class.
getClassLoader().getResourceAsStream("db.properties");
cfg.load(in);
System.out.println(cfg);
//初始化连接参数
driver = cfg.getProperty("jdbc.driver");
url = cfg.getProperty("jdbc.url");
username = cfg.getProperty("jdbc.username");
password = cfg.getProperty("jdbc.password");
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
//DbUtils.java
/*
* 严格的关闭数据库的方法
* 关闭数据库的连接方法,封装复杂的关闭过程
*/
public static void close(Connection conn) {
if(conn!=null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 封装创建数据库连接的过程
* 简化数据库连接
* @return
* @throws
*
* 写成当前这个样子是有点缺点的
*/
public static Connection getConnection(){
/* //调一次方法创建4个变量,很浪费
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String user = "zqk";
String password = "zqk123";*/
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,username,password);
return conn;
}catch(Exception e) {
e.printStackTrace();
//数据库连接不上得到一个异常,对调用者负责
throw new RuntimeException(e);
}
}
}
——————————————————————————————————————————————————————————————
resource下面创建一个db.properties文件
#db.properties
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:XE
jdbc.username=zqk
jdbc.password=zqk123
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:XE
jdbc.username=zqk
jdbc.password=zqk123
# paramter for BasicDataSource
initSize=2
maxActive=2
initSize=2
maxActive=2
————————————————————————————————————————————————————此时,通过调用连接管理方法来创建一个数据库的连接,来执行DQL语句
package cn.tedu.jdbc.day01;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Statement;
public class Demo04 {
public static void main(String[] args) throws Exception {
//调用连接管理方法创建连接
Connection conn = DbUtils.getConnection();
Statement st = conn.createStatement();
String sql = "select * from robin_demo_zqk";
ResultSet rt = st.executeQuery(sql);
while(rt.next()) {
int id = rt.getInt("id");
String name = rt.getString("name");
System.out.println(id+":"+name);
}
conn.close();
}
}
public static void main(String[] args) throws Exception {
//调用连接管理方法创建连接
Connection conn = DbUtils.getConnection();
Statement st = conn.createStatement();
String sql = "select * from robin_demo_zqk";
ResultSet rt = st.executeQuery(sql);
while(rt.next()) {
int id = rt.getInt("id");
String name = rt.getString("name");
System.out.println(id+":"+name);
}
conn.close();
}
}