您的位置:首页 > 数据库

JDBC和DBCP链接数据库

2017-11-14 16:54 141 查看
JDBC链接数据库。

这是最基本的连接数据库方式,思路是这样的:

导入jar包,并add to path。

加载数据库驱动。

获取数据库链接。

创建Statement对象。

操作数据库(执行SQL语句)。

得到结果集。

最后关闭数据库链接。

简单例子:

package DB;
import java.sql.*;

public class JDBCUtils {

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String URL="jdbc:mysql://localhost:3306/Demo";

static final String name = "root";
static final String password = "9527";

public static void main(String[] args) {
// TODO Auto-generated method stub

Connection con = null;
Statement st = null;

try{
//注册驱动
Class.forName(JDBC_DRIVER);
//获得数据库链接
con = DriverManager.getConnection(URL, name, password);
//创建Statement对象
st = con.createStatement();
//操作数据库
ResultSet rs = st.executeQuery("select * from user");
//读取数据
while(rs.next()){
String name = rs.getString("name");
String pwd = rs.getString("password");
String phone = rs.getString("phone");

System.out.println("-----");
System.out.println("name is:"+name);
System.out.println("password is:"+pwd);
System.out.println("phone is:"+phone);
System.out.println("-----");
}
// 完成后关闭
rs.close();
st.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}

}


DBCP链接数据

数据库连接池的操作思路是这样的:

(1)建立数据库连接池对象。

(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。

(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。

(4)存取数据库。

(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。

(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

配置文件,最重要的是driverClassName,url,username,password:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/Demo

username=root
password=9527

initialSize=10

maxActive=50

maxIdle=20

minIdle=5

maxWait=60000

connectionProperties=useUnicode=true;characterEncoding=utf8

defaultAutoCommit=true

defaultReadOnly=

defaultTransactionIsolation=REPEATABLE_READ


package DB;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;

public class DBCPUtils {

static DataSource DS = null;

static{
try{
Properties prop = new Properties();
InputStream b = DBCPUtils.class.getClassLoader().getResourceAsStream(
"../DBCP.properties");
System.out.println(b);
prop.load(DBCPUtils.class.getClassLoader().getResourceAsStream(
"DBCP.properties"));
DS = BasicDataSourceFactory.createDataSource(prop);
}catch(Exception e){
e.printStackTrace();
}
}

public static Connection getConnection(){
try {
return DS.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public static void close(Connection conn, Statement st, ResultSet rs){
if(rs!=null){
try{
rs.close();
}catch(Exception e){
e.printStackTrace();
}
rs=null;
}
if(st!=null){
try{
st.close();
}catch(Exception e){
e.printStackTrace();
}
st=null;
}
if(conn!=null){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
conn=null;
}
}

public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub

Connection con = DBCPUtils.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from user");
while(rs.next()){
String name = rs.getString("name");
String pwd = rs.getString("password");
String phone = rs.getString("phone");

System.out.println("-----");
System.out.println("name is:"+name);
System.out.println("password is:"+pwd);
System.out.println("phone is:"+phone);
System.out.println("-----");
}
DBCPUtils.close(con, st, rs);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: