本文所需架包:mysql-connector-java-5.1.7-bin.jar(连接MySQL数据库需要),ojdbc6.jar(连接Oracle数据库需要)

1.JDBC工具类(JDBCUtil.java)

package mysql.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
public static Connection getMysqlConect() throws Exception{
//1.注册驱动(加载com.mysql.jdbc.Driver类的同时实现注册mysql驱动,因为注册驱动是com.mysql.jdbc.Driver类中的静态代码块)
Class.forName("com.mysql.jdbc.Driver");
//2. 获取连接
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url, "root", "root"); return conn;
} public static Connection getOracleConect() throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:xe";
Connection conn = DriverManager.getConnection(url, "huwei", "123"); return conn;
} public static void closeStatementSql(Connection conn,Statement sta,ResultSet rs){
try {
//先赋值的后关闭
if(rs != null){
rs.close();
}
if(sta != null){
sta.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} public static void closePrepareStatementSql(Connection conn,PreparedStatement pst,ResultSet rs){
try {
if(rs != null){
rs.close();
}
if(pst != null){
pst.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

2.JDBC模板类(JDBCTemplate.java)

package mysql.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class JDBCTemplate {
public static void sqlUpdate(String sql, Object[] params){
Connection conn = null;
PreparedStatement pst = null;
try {
conn = JDBCUtil.getMysqlConect();
pst = conn.prepareStatement(sql);
//因为pst不需要参数时,params可能会传入null;
//为了避免出现NullPointerException,对params进行声明。
if(params == null){
params = new Object[]{};
}
for (int i = 0; i < params.length; i++) {
pst.setObject(i+1, params[i]);
}
pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCUtil.closePrepareStatementSql(conn, pst, null);
}
}   public static List<Map<String,Object>> sqlQuery(String sql, Object[] params){ List<Map<String,Object>> recordList = new ArrayList<Map<String,Object>>();
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getMysqlConect();
pst = conn.prepareStatement(sql);
/*因为pst不需要参数时,params可能会传入null;
为了避免出现NullPointerException,对params进行声明。
*/
if(params == null){
params = new Object[]{};
}
for (int i = 0; i < params.length; i++) {
pst.setObject(i+1, params[i]);
}
rs = pst.executeQuery(); ResultSetMetaData mataData = rs.getMetaData();
//the count of records
int count = mataData.getColumnCount(); while(rs.next()){
Map<String, Object> record = new HashMap<String, Object>();
for(int i = 1; i <= count; i++){
String columnName = mataData.getColumnName(i);
record.put(columnName,rs.getObject(i));
}
recordList.add(record);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCUtil.closePrepareStatementSql(conn, pst, null);
}
return recordList;
}
}

3.JDBC测试类(JDBCTest.java)

package mysql.test;

import java.util.List;
import java.util.Map; import mysql.util.JDBCTemplate; import org.junit.Test; public class JDBCTest { @Test
public void testSqlUpdate(){
String sql = "update emp set name = ? where id = ?";
Object[] params = new Object[]{"huwei",1};
JDBCTemplate.sqlUpdate(sql, params);
} @Test
public void testSqlQuery(){
String sql = "select * from emp";
//Object[] params = new Object[]{};
List<Map<String,Object>> recordList = JDBCTemplate.sqlQuery(sql, null);
for (Map<String,Object> record : recordList) {
System.out.println(record.get("id") + " " + record.get("name"));
}
}
}

  

  更多内容,请访问: http://www.cnblogs.com/BlueStarWei/

JDBC之组件封装的更多相关文章

  1. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  2. Vuejs 页面的区域化与组件封装

    组件的好处 当我用vue写页面的时候,大量的数据页面渲染,引入组件简化主页面的代码量,当代码区域块代码差不多相同时,组件封装会更加简化代码.组件是Vue.js最强大的功能之一. 组件可以扩展HTML元 ...

  3. ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State

    开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合 ...

  4. Vue + Element UI 实现权限管理系统 (功能组件封装)

    组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...

  5. Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装

    组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...

  6. picker(级联)组件及组件封装经验

    组件封装的几个经验 a.参数:最佳方式,仅一个object参数,所需要的实际参数,作为对象属性传入. 如此,便于数据的处理和扩展.例如,后期扩展需要增加参数,或者调整参数时,如果使用的对象传入,老的调 ...

  7. Linux组件封装(五)一个生产者消费者问题示例

    生产者消费者问题是计算机中一类重要的模型,主要描述的是:生产者往缓冲区中放入产品.消费者取走产品.生产者和消费者指的可以是线程也可以是进程. 生产者消费者问题的难点在于: 为了缓冲区数据的安全性,一次 ...

  8. [开源] 基于Layui组件封装的后台模版,HG-Layui-UI通用后台管理框架V1.0版

    HG框架简介 HG-Layui-UI框架,是基于layui最新版UI搭建的一套通用后台管理框架,借鉴了市面上各大主流框架风格,采用iframe标签页实现,保留了传统开发模式的简单实用性. 为快速开发减 ...

  9. Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

    在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着 ...

随机推荐

  1. 配置lnmp

    ===================准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state –state NEW ...

  2. js移动端/H5同时选择多张图片上传并使用canvas压缩图片

    最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...

  3. Ecshop去掉模版中随机出现Ecshop版权的方法

    EC如果是免费用户用的话,模版里面会随机出现 powered by ecshop 的字样,看了一下原来是在COMMON.JS里面写的一段代码,删除掉就可以解决掉了,方法如下: 打开  js/commo ...

  4. ecshop邮件订阅按“订阅”没反应

    原订阅邮件所使用的JS文件transport.js和JQuery冲突,会更改transport.js文件,用以下代码可同样实现订阅功能. <input type="text" ...

  5. JSON总结-持续更新补充

    基本的json格式 { "name": "jobs", "boolean": true, "age": null, &q ...

  6. CentOS通过yum安装php7.0

    一.删除旧版本 如果已经安装过php就先删除之前的版本.检查方法如下: yum list installed | grep php 然后将安装的包进行删除 比如 yum remove php.x86_ ...

  7. php中memcache的运用

    <?php /** * •Memcache::add — 增加一个条目到缓存服务器 * •Memcache::addServer — 向连接池中添加一个memcache服务器 * •Memcac ...

  8. tcpdf导出pdf数据支持中文的解决方案

    步骤如下:1.确保你测试tcpdf能正常输出英文内容的pdf2.测试输入中文内容后显示是?的乱码或者空白分析原因,是因为我们输入的中文,tcpdf字体库并不支持,因此乱码或者空白显示 添加一个合适的字 ...

  9. MATLAB命令大全和矩阵操作大全

    转载自: http://blog.csdn.net/dengjianqiang2011/article/details/8753807 MATLAB矩阵操作大全 一.矩阵的表示在MATLAB中创建矩阵 ...

  10. 4.jsp的内置对象

    1.jsp有九大内置对象 out request response session application page pagecontext exception config 2.用户发请求 requ ...