spark streaming将处理结果存入mysql中(使用c3p0连接池)
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连接池)的更多相关文章
- Spring框架中 配置c3p0连接池 完成对数据库的访问
开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...
- Hibernate的配置中,c3p0连接池相关配置
一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...
- Spring框架中 配置c3p0连接池
开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...
- Java中使用C3P0连接池
先看官网给的范例: import java.sql.*; import javax.naming.*; import javax.sql.DataSource; import com.mchange. ...
- C3P0连接池在hibernate和spring中的配置
首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...
- Mysql 中的SSL 连接
Mysql 中的SSL 连接 以下来自网络参考和自己测试整理,没有查找相关资料.若有错误之处,欢迎指正. 当前的Mysql 客户端版本基本都不太能支持 caching_sha2_password 认证 ...
- Spring中常用的连接池配置
首先,我们准备Jdbc属性文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.ur ...
- JAVA中事物以及连接池
一.事物 什么是事物? 事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元.这些单元要么全都成功,要么全都不成功. 做一件事情,这个一件事情中有多个 ...
- 网络协议 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 ...
随机推荐
- Cardinal and Ordinal Numbers
Cardinal Numbers Table of Cardinal Numbers Cardinal numbers from 1 through 1,000,000 1 one 11 eleven ...
- C和C指针小记(十四)-字符串、字符和字节
1.字符串 C语言没有字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符数组中. 字符串常量和适用于那些程序不会对他们进行修改的字符串. 所有其他字符串都必须存储于字符串数组或动态分配的内存 ...
- Web开发——HTML基础(HTML响应式Web设计 Bootstrap)
参考: 参考:http://www.bootcss.com/ 目录: 1.什么是响应式 Web 设计? 2.创建自己的响应设计 3.使用 Bootstrap 1.什么是响应式 Web 设计? RWD ...
- 简单的可以跑起来的dubbo例子
原文地址:https://blog.csdn.net/jingyangV587/article/details/78901937 项目结构: maven项目,内部三个module. <?xml ...
- 小程序图表wx-chart
下载地址 https://github.com/xiaolin3303/wx-charts 使用步骤: 一.解压后,把dist里面的wxcharts.js或者wxcharts-min.js放在小程序的 ...
- C++的初始化成员列表
class CExample { public: int a; float b; //构造函数初始化列表 CExample(): a(),b(8.8) {} //构造函数内部赋值 CExample() ...
- torch随机数 manual_seed
import torch seed = 2018 torch.manual_seed(seed) torch.cuda.manual_seed(seed) a=torch.rand([1,5]) # ...
- c# 传入c++dll 回调函数输出byte 导致 bug
- caffe-ssd安装GPU版本和CPU的区别
在CPU中1.CPU_ONLY :=1的注释取消掉 2.BLAS := atlas 在GPU中 1.USE_CUDNN := 1的注释取消 2.BLAS := open
- CentOS 7 NAT模式LVS搭建
NAT模式下 , 调度器需要有两个IP , 一个公网IP一个内网IP , web服务器只需要内网IP 调度器LB : 192.168.94.11(内网IP) 192.168.29.11 (仅主机模式 ...