1、c3p0相应的架包导入工程中

将以下四个架包导入工程,

  主要有三个架包:c3p0-0.9.5.2.jar

c3p0-oracle-thin-extras-0.9.5.2.jar

mchange-commons-java-0.9.5.2.jar

  记得一定要导入mysql-connector-java-5.1.26-bin.jar架包,这是连接mysql的驱动程序。

2、创建进程池

  主要有三个类:

   C3p0Utils创建连接以及关闭连接;

     DBUtils插入更新等执行语句;

   DBUtil_BO数据库连接对像;

   App测试;

 import com.mchange.v2.c3p0.ComboPooledDataSource;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; /**
* Created by lala on 2017/6/29.
*/ public class C3p0Utils { static org.apache.log4j.Logger logger=org.apache.log4j.Logger.getLogger(C3p0Utils.class.getName()); //通过标识名来创建相应连接池
static ComboPooledDataSource dataSource=new ComboPooledDataSource("mysql");
//从连接池中取用一个连接
public static Connection getConnection(){
try {
String url="jdbc:mysql://localhost:3306/mysql";
//定义连接数据的用户名
String user="root";
//定义连接数据库的密码
String password="";
return dataSource.getConnection(); } catch (Exception e) {
logger.error("Exception in C3p0Utils!", e);
System.out.println("数据库连接出错!"+e);
return null;
}
}
//释放连接回连接池
public static void close(Connection conn, PreparedStatement pst, ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
logger.error("Exception in C3p0Utils!", e);
System.out.println("数据库连接关闭出错!"+e);
}
}
if(pst!=null){
try {
pst.close();
} catch (SQLException e) {
logger.error("Exception in C3p0Utils!", e);
System.out.println("数据库连接关闭出错!"+ e);
}
} if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
logger.error("Exception in C3p0Utils!", e);
System.out.println("数据库连接关闭出错!"+ e);
}
}
} }
DBUtils插入更新等执行语句:
 public class DBUtils {

     static org.apache.log4j.Logger logger=org.apache.log4j.Logger.getLogger(DBUtils.class.getName());

     private static void realseSource(Connection _conn, PreparedStatement _st, ResultSet _rs){
C3p0Utils.close(_conn,_st,_rs);
} public static void realseSource(DBUtil_BO _vo){
if(_vo!=null){
realseSource(_vo.conn, _vo.st, _vo.rs);
}
}
//注意:查询操作完成后,因为还需提取结果集中信息,所以仍保持连接,在结果集使用完后才通过DBUtils.realseSource()手动释放连接
public static void executeQuery(DBUtil_BO vo)
{
try{
vo.rs = vo.st.executeQuery();
}catch (SQLException e){
realseSource(vo); logger.error("SQL语法有误: ",e);
System.out.println("err.user.dao.jdbc"+e);
}
} //而update操作完成后就可以直接释放连接了,所以在方法末尾直接调用了realseSourse()
public static void executeUpdate(DBUtil_BO vo)
{ Connection conn = vo.conn;
PreparedStatement st = vo.st;
try {
st.executeUpdate();
} catch (SQLException e) {
realseSource(conn, st, null);
logger.error(" SQL语法有误: ",e);
System.out.println("err.user.dao.jdbc"+e);
}
realseSource(conn, st,null );
}
}
DBUtil_BO数据库连接对像:
 package org.test.maven;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; /**
* Created by lala on 2017/6/29.
*/
public class DBUtil_BO { public Connection conn = null;
public PreparedStatement st = null;
public ResultSet rs = null;
public DBUtil_BO() {
super();
} }

Obj方便插入的某一对象(scala)

 package org.test.maven

 /**
* Created by lala on 2017/7/1.
*/
class Obj {
private var usr = -1
private var name = "" def setUsr(usr:Int)={
this.usr=usr
} def setName(name:String)={
this.name=name
}
def getUsr()=this.usr
def getName()=this.name
}

App测试:

 package org.test.maven;

 import java.sql.SQLException;
import org.apache.log4j.Logger; /**
* Hello world!
*
*/
public class App
{ private static Logger logger = Logger.getLogger(App.class); public static void main( String[] args ) throws SQLException {
System.out.println( "Hello World!" );
DBUtil_BO dbBo = new DBUtil_BO();
dbBo.conn=C3p0Utils.getConnection();//取用一个连接
String sql = "select id from usr where usr_name = ? ";
try{
dbBo.st=dbBo.conn.prepareStatement(sql);//预处理sql语句
}catch (SQLException e){
logger.error("查询预处理出错!",e);
System.out.println("查询预处理出错!"+e);
}
Obj ob=new Obj();
ob.setName("bgngh");
System.out.println(ob.getName());
dbBo.st.setString(1,ob.getName());
DBUtils.executeQuery(dbBo);
String name = null;
//从dbBo类提取操作结果
int id = 0;
if (dbBo.rs.next()) {
try{ id = dbBo.rs.getInt("id");
id = 5;
}catch(SQLException e){
logger.error("查询返回结果出错!",e);
} }
System.out.println(id);
//结果集遍历完了,手动释放连接回连接池
DBUtils.realseSource(dbBo);
}
}

spark streaming将处理结果存入mysql中(使用c3p0连接池)的更多相关文章

  1. Spring框架中 配置c3p0连接池 完成对数据库的访问

    开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...

  2. Hibernate的配置中,c3p0连接池相关配置

    一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...

  3. Spring框架中 配置c3p0连接池

    开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...

  4. Java中使用C3P0连接池

    先看官网给的范例: import java.sql.*; import javax.naming.*; import javax.sql.DataSource; import com.mchange. ...

  5. C3P0连接池在hibernate和spring中的配置

    首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...

  6. Mysql 中的SSL 连接

    Mysql 中的SSL 连接 以下来自网络参考和自己测试整理,没有查找相关资料.若有错误之处,欢迎指正. 当前的Mysql 客户端版本基本都不太能支持 caching_sha2_password 认证 ...

  7. Spring中常用的连接池配置

    首先,我们准备Jdbc属性文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.ur ...

  8. JAVA中事物以及连接池

    一.事物 什么是事物? 事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元.这些单元要么全都成功,要么全都不成功. 做一件事情,这个一件事情中有多个 ...

  9. 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

    1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...

随机推荐

  1. git 实战

    1.网站手动创建新分支 2.在master下 项目路径下 右键 Git branch here 3.切分支: git fetch git branch -a git branch -r git che ...

  2. Luogu 1177 - 【模板】快速排序 - [快速排序][归并排序][无旋Treap]

    题目链接:https://www.luogu.org/problemnew/show/P1177 题意:输入 $n$ 以及后续 $n$ 个整数,让你将这 $n$ 个整数从小到大排序输出. 归并排序(用 ...

  3. 日期控件——my97

    一.官网 http://www.my97.net/index.asp 下载: //下文已更新与bootstrap样式的结合 二.demo演示 实际使用时请注意文件引入的实际位置: [补充] 数据库字段 ...

  4. spark-sql将Rdd转换为DataFrame进行操作的两种方法

    SparkConf sparkConf = new SparkConf() .setMaster("local").setAppName("ClzMap"); ...

  5. PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别

    $_SERVER['SCRIPT_FILENAME']          -------> 当前执行程序的绝对路径及文件名__FILE__                             ...

  6. 一年工作经验的大专生程序员(java后台)

    1.文章前言     作为18应届毕业大专生已工作一年,相信这也是大部分同届生的现状.       那么,一个萌新进入职场一年都经历了什么呢?在校那会我是挺好奇的.       这篇文章是根据自己一年 ...

  7. NIO学习资料

    五大IO模型 https://jiges.github.io/2018/02/07/%E4%BA%94%E5%A4%A7IO%E6%A8%A1%E5%9E%8B/ Getting started wi ...

  8. Lua C/C++互相调用

    先来说下大致脚本引擎框架,此次采用如下,即运行C++代码启动程序,然后加载Lua脚本执行! 1.基础 Lua脚本中只能调用 int (*lua_CFunction) (lua_State *L) 这种 ...

  9. rocketmq源码打包步骤

    1,从git上面克隆好源码之后,进入rocketmq目录,执行: mvn -Prelease-all -DskipTests clean install 2,打包完成之后,进入distribution ...

  10. Vue系列之 => 命名视图实现经典布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...