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 ...
随机推荐
- POJ 2689 - Prime Distance - [埃筛]
题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...
- [daily][device][archlinux][trackpoint] 修改指点杆速度/敏捷度
修改指点杆速度,敏捷度: [root@T7 ~]# echo > /sys/devices/platform/i8042/serio1/serio2/sensitivity [root@T7 ~ ...
- vsftp快速搭建ftp服务器
什么是vsftp: vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面.它支持很多其他的 FT ...
- python框架之Django(16)-接入Redis
准备 安装Redis 参考 Ubuntu 中 Redis 的安装与使用. 在python中使用Redis 参考 python 中使用 Redis . 安装依赖包 在 Django 中接入 Redis ...
- mybatis 转义
当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...
- JAVA设计模式之静态代理
首先看看什么是代理模式. 一 代理模式 使用一个代理对象将对象包装起来,然后用该代理对象来取代该对象,任何对原始对象的调用都要通过代理,代理对象决定是否以及何时调用原始对象的方法 二 静态模式 要求被 ...
- 这10个Python项目超有趣!
前言: Python可谓是现在很多人正在学或者想学的一个脚本语言了,提到学习自然就少不了拿项目练手,可是一般的项目根本提不起兴趣嘛,这10个项目可是非常有趣的,不信你看看. [Python 图片转字符 ...
- PHP GZ压缩与解压
/*将字符串添加至GZ文件*/ function gz_str($str,$gz_name){ $fp = gzopen ($gz_name, 'w9'); gzwrite ($fp, $str); ...
- Mac下编译android4.0.4遇到的问题
这里总结下自己遇到的问题 jdk6安装,这个去苹果官网有 这里下载10.5的sdk https://github.com/phracker/MacOSX-SDKs/releases
- cocos2d-x 贡献一个oss上传脚本
平常写前端项目和H5游戏时特别频繁的一个操作就是上传到oss上,特别浪费时间.所以用ali-oss写了一个脚本.配置属性后直接npm run oss就能上传到oss上了.再也不需要手动操作.现在是脚本 ...