java工程连接数据库(数据源dbcp/c3p0)
来源:互联网 发布:知乎 正装西服品牌 编辑:程序博客网 时间:2024/05/22 15:01
/**
测试类
- 记得加入mysql的驱动jar包
- 但是缺点是:每一次的连接都需要创建连接会很耗时
- 所以代替的是DataSource来实现得到连接,用到的是连接池
- DBCP和c3p0数据源的使用—需要配置需要额外的jar包:tomcat已经有了DBCP所需的jar包
- DBCP:BasicDataSource BasicDataSourceFactory需要properties数据源
- c3p0:xml配置 优点是可以配置多个连接池 ComboPooledDataSource
- 以上都是java工程如果是web工程的话需要tomcat配置
- 可以参照tomcat的自带DBCP
- 注意的是JNDI:JAVA NAMESPCE DIRECTORY INTERFACE 依据名值对形式存在
- 要知道的是tomcat服务器启动的时候就创建了数据源,我们要获取该数据源就是通过JNDI
- */
public class SimpleTest {
static final String url=”com.mysql.jdbc.Driver”;
static final String query_sql=”select * from zhu_ce”;
static final String add_sql=”insert into zhu_ce (id,username,password) values(2,’xx’,’52588’)”;
static final String minus_sql=”delete from zhu_ce where username=’xx’”;
static final String change_sql=”update zhu_ce set password=’7777777’”;
public static void main(String[] args) {
//得到的是URL的path
Stringpath=SimpleTest.class.getClassLoader().getResource(“info.properties”).getPath();
///E:/MyEclipse%2010/SimpleTest/bin/info.properties
System.out.println(path);
Properties p=new Properties();
//com.zbv.mytest001.SimpleTest.class.getClassLoader().getSystemResourceAsStream(“info.properties”);
InputStream in=ClassLoader.getSystemResourceAsStream(“info.properties”);
try {
//加载properties文件
p.load(in);
//注册驱动—反射机制
Class.forName(url);
//创建连接对象
Connectionconn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/mytest001?user=root&password=root”); Connectionconn=DriverManager.getConnection(p.getProperty(“curl”,
// p.getProperty(“username”),
// p.getProperty(“password”));
// System.out.println(“curl=”+p.getProperty(“curl”)+” ”
// +”-username=”+p.getProperty(“username”)+” ”
// +”-password=”+p.getProperty(“password”));
// Connection conn=SimpleDBUtils.getConnectionDB();
// Connection conn=DBCPUtils.getConnectionDB();
Connection conn=C3P0Utils.getConnectionDB();
//创建命令对象statement/prepareStatement
// Statement sm=conn.createStatement();
PreparedStatement ps=conn.prepareStatement(query_sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(“id=”+rs.getInt(“id”)+” ”
+”username=”+rs.getString(“username”)+” ”
+”password=”+rs.getString(“password”)); }
//执行查询数据库操作
//查询—返回的是结果集
// ResultSet rs=sm.executeQuery(query_sql);
//输出结果集
// while(rs.next()){
// System.out.println(“id=”+rs.getInt(“id”)+” ”
// +”username=”+rs.getString(“username”)+” ”
// +”password=”+rs.getString(“password”));
// }
//添加
// int result=sm.executeUpdate(add_sql);
//删除
// int result=sm.executeUpdate(minus_sql);
// int result=sm.executeUpdate(change_sql);
// System.out.println(“结果是:”+result);
//依次关闭连接
// sm.close();
// conn.close();
// SimpleDBUtils.releaseDB(conn, ps, rs);
// DBCPUtils.releaseConnectionDB();
C3P0Utils.releaseConnectionDB();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
/**
DriverManager创建连接的工具类
- 使用DriverManager建立连接数据库
- */
public class SimpleDBUtils {
private static ResourceBundle rb;
static {
//要是properties文件
rb=ResourceBundle.getBundle(“info”);
try {
//注册驱动
Class.forName(rb.getString(“classURL”));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
/**- 连接数据库
- */
public static Connection getConnectionDB() {
try {
return DriverManager.getConnection(rb.getString(“curl”), rb.getString(“username”), rb.getString(“password”));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/** - 释放数据库的资源
- */
public static void releaseDB(Connection conn, PreparedStatement ps,
ResultSet rs) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } }
/**
DBCP数据源连接工具类
- 使用DBCP数据源连接数据库:配置文件properties
- 所需jar包
- BasicDataSource implements DataSource
- */
public class DBCPUtils {
private static BasicDataSource bds;
static{
Properties p=new Properties();
InputStream in=DBCPUtils.class.getClassLoader().getResourceAsStream(“dbcpconfig.properties”);
try {
p.load(in);
bds=(BasicDataSource) BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
/**- 使用DBCP数据源连接数据库表
- */
public static Connection getConnectionDB(){
try {
return bds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
return null;
}
/** - 释放DBCP连接的数据库资源
- */
public static void releaseConnectionDB(){
try {
bds.close();
System.out.println(“数据库资源关闭了….”);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
/**
c3p0数据源连接工具类
- 使用c3p0数据源连接数据库:配置文件xml
- jar包
- 相比dbcp的一大优点应该是可以进行多个配置
- ComboPooledDataSource实现 PooledDataSource继承DataSource
- xml里面把注册的数据库URL 连接url 以及用户名 密码都写在xml里面
- */
public class C3P0Utils {
private static ComboPooledDataSource cpds;
static{
cpds=new ComboPooledDataSource();
}
/**- 使用c3p0数据源连接数据库表
- */
public static Connection getConnectionDB(){
try {
return cpds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/** - 释放c3p0连接的数据库资源
- */
public static void releaseConnectionDB(){
try {
DataSources.destroy(cpds);
System.out.println(“数据库资源关闭了….”);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
c3p0xml配置文件
<?xml version="1.0" encoding="UTF-8"?><c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property> <property name="user">root</property> <property name="password">root</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </default-config> <named-config name="mysql"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property> <property name="user">root</property> <property name="password">root</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </named-config> <named-config name="oracle"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property> <property name="user">root</property> <property name="password">root</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </named-config></c3p0-config>
dbcp数据源properties配置文件
连接设置
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day16 username=root password=root
initialSize=10 #最大连接数量 maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
//JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] #注意:”user” 与 “password” 两个属性会被明确地传递,因此这里不需要包含他们。 connectionProperties=useUnicode=true;characterEncoding=gbk
// 指定由连接池所创建的连接的自动提交(auto-commit)状态。 defaultAutoCommit=true
//driver default 指定由连接池所创建的连接的只读(read-only)状态。
如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=false
//driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
最后说一下:
这只是java项目连接数据库的配置和使用,如果是web项目的话应当配置对应服务器的,例如tomcat,当然了,下一回我会更新的关于tomcat的web工程配置和使用,以飨喜欢的小伙伴^–^
当然了,十分欢迎各位大神的错误纠正或提升建议,谢!
- java工程连接数据库(数据源dbcp/c3p0)
- c3p0数据源连接数据库
- DBCP数据源,C3P0数据源
- Spring数据源C3P0,DBCP
- C3P0数据源 连接Access数据库
- JAVA 入门学习之路-数据源/连接池-DBCP和C3P0。
- DBCP和C3P0连接MySQL数据库
- 事务、连接池、开源数据源(DBCP、C3P0)
- 连接池与数据源:DBCP以及C3P0的使用
- 连接池与数据源:DBCP以及C3P0的使用
- java数据连接池 c3p0 dbcp proxool
- java—连接池 C3p0 DBCP
- Java连接池优化 DBCP/C3P0
- Java基础之 连接池 dbcp c3p0
- Java 使用JDBC、DBCP、C3P0访问数据库
- Java数据库之C3P0和DBCP框架
- Java 使用JDBC、DBCP、C3P0访问数据库
- c3p0和dbcp数据源配置
- 带权二分图匹配KM算法
- 架构 - 第二课:git命令
- java集合08--List总结
- 【codevs1098 均分纸牌】贪心
- 查看应用的安全码
- java工程连接数据库(数据源dbcp/c3p0)
- 对MVC、MVP、MVVM的理解
- 详谈javascript中document.referrer的兼容性
- TensorFlow中cnn-cifar10样例代码详解
- 视频引导页
- android 自定义输入法研究(一)
- python中 __slots__
- uva14462 Age Sort
- (基础十三)十进制转二进制,八进制,十六进制