这是目录结构:

其中后面三个类都是第一个类的子类,第一个类是父类。

JdbcUtils:

package com.smt.db;

import java.io.IOException;
import java.io.InputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties; import com.alibaba.druid.pool.DruidDataSource; public class JdbcUtils {
// 定义变量
private Connection ct = null;
// 大多数情况下用preparedstatement替代statement
private PreparedStatement ps = null;
private ResultSet rs = null; // 连接数据库的参数
protected String url = "";
protected String username = "";
protected String driver = "";
protected String passwd = ""; private CallableStatement cs = null;
protected DruidDataSource dataSource = new DruidDataSource(); public CallableStatement getCs() {
return cs;
} // 得到连接
public void getConnection() {
try {
ct = dataSource.getConnection();
ct.setAutoCommit(true);
} catch (Exception e) {
e.printStackTrace();
}
} public void closeConnection(){
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public void BeginTran(){
try {
ct = dataSource.getConnection();
ct.setAutoCommit(false);
} catch (Exception e) {
e.printStackTrace();
}
} public void CommitTran() throws SQLException{
ct.commit();
ct.close();
} public void RollBackTran(){
try {
ct.rollback();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} public List<Map> executeQuery(String sql, String[] parameters) {
List<Map> list = new ArrayList<Map>();
try {
ps = ct.prepareStatement(sql);
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
ps.setString(i + 1, parameters[i]);
}
}
rs = ps.executeQuery(); List<Map> heads = new ArrayList<Map>();
ResultSetMetaData rsmd = rs.getMetaData();// rs为查询结果集
int count = rsmd.getColumnCount();
for (int i = 1; i <= count; i++) {
Map meta = new HashMap();
meta.put("colName", rsmd.getColumnName(i));
meta.put("dataType", rsmd.getColumnTypeName(i));
heads.add(meta);// 把列名存入向量heads中
} while (rs.next()) {
Map map = new HashMap();
for (Map col : heads) {
switch (col.get("dataType").toString()) {
case "VARCHAR":
map.put(col.get("colName").toString().toLowerCase(),
rs.getString(col.get("colName").toString()));
break;
case "BIGINT":
map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
break;
case "SMALLINT":
map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
break;
case "INTEGER":
map.put(col.get("colName").toString().toLowerCase(), rs.getInt(col.get("colName").toString()));
break;
case "BIGDECIMAL":
map.put(col.get("colName").toString().toLowerCase(),
rs.getBigDecimal(col.get("colName").toString()));
break;
case "DECIMAL":
map.put(col.get("colName").toString().toLowerCase(),
rs.getBigDecimal(col.get("colName").toString()));
break;
case "DATE":
map.put(col.get("colName").toString().toLowerCase(),
rs.getString(col.get("colName").toString()));
break;
case "DATETIME":
map.put(col.get("colName").toString().toLowerCase(),
rs.getString(col.get("colName").toString()));
break;
default:
break;
}
}
list.add(map);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps);
}
return list;
} // 先写一个update、delete、insert
// sql格式:update 表名 set 字段名 =?where 字段=?
// parameter神应该是(”abc“,23)
public void executeUpdate(String sql, String[] parameters) {
try {
ps = ct.prepareStatement(sql);
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
ps.setString(i + 1, parameters[i]);
} }
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();// 开发阶段
// 抛出异常
// 可以处理,也可以不处理
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps);
}
} public void close(ResultSet rs, Statement ps) {
// 关闭资源(先开后关)
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
ps = null;
}
}
}

LocalHelper:

package com.smt.db;

import java.io.IOException;
import java.io.InputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class LocalHelper extends JdbcUtils { private static Properties pp = null;
private InputStream fis = null; public LocalHelper(){
super();
pp = new Properties();
fis=OggHelper.class.getClassLoader().getResourceAsStream("local.properties");
//fis = new FileInputStream();
try {
pp.load(fis);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
url = pp.getProperty("dbUrl");
driver = pp.getProperty("dbDriver");
username = pp.getProperty("dbUserName");
passwd = pp.getProperty("dbPassword"); dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(passwd);
}
}

local.properties:

#application configs
#jdbc c3p0 config
dbDriver=com.mysql.jdbc.Driver
dbUrl = jdbc:mysql://localhost:3306/shbi?characterEncoding=utf8
dbUserName = root
dbPassword = root

我的JdbcUtils类的更多相关文章

  1. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  2. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  3. 自定义的jdbc连接工具类JDBCUtils【java 工具类】

    JDBCUtils 类设计: 1. 创建私有的属性*(连接数据库必要的四个变量):dreiver url user password 2. 将构造函数私有化 3.将注册驱动写入静态代码块 4.外界只能 ...

  4. JDBCUtils工具类

    JdbcUtils.java import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource ...

  5. 基于durid的JDBCUtils工具类

    1.JDBCUtils类 package com.alphajuns.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; impo ...

  6. Javaweb学习笔记——(十七)——————JDBC的原理、四大核心类、四大参数、预编译、Dao模式、批处理、大数据、时间类型的转换

    JDBC入门 *导入jar包:驱动 *加载驱动类:Class.forName("类名"); *给出url.username.password,其中url背下来 *使用DriverM ...

  7. day17(JDBC入门&jdbcUtils工具介绍)

    day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...

  8. JdbcUtils 小工具

    // 第一版 // src 目录下 dbconfig.properties 配置文件, 用来配置四大参数 // 注意 properties 配置文件中没有分号结尾, 也没有引号 driverClass ...

  9. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

随机推荐

  1. Mysql 分区表-分区操作

    一.查看MySQL是否支持分区 1.MySQL5.6以及之前版本 show variables like '%partition%'; 2.MySQL5.7 show plugins; 二.分区表的分 ...

  2. ADOX创建ACCESS 表时,几个附加属性

     中文  英文 允许空字符串 Jet OLEDB:Allow Zero Length Unicode压缩 Jet OLEDB:Compressed UNICODE Strings 有效性规则 Jet ...

  3. java web中的多条件查询

    转自:http://blog.csdn.net/xulu_258/article/details/46623317 所谓多条件查询即为用户输入想要查询的条件,然后根据用户输入的条件进行查询. 当用户有 ...

  4. 特征选择: 卡方检验、F 检验和互信息

    特征选择是特征工程中的重要一环,其主要目的是从所有特征中选出相关特征 (relevant feature),或者说在不引起重要信息丢失的前提下去除掉无关特征 (irrelevant feature) ...

  5. NodeJS 难点(网络,文件)的 核心 stream 四: writable

    什么是可写流 白板 可写流是对数据流向设备的抽象,用来 消费  上游流过来的数据 通过可写流程序可以把数据写入设备, 常见的是 本地磁盘文件或者 TCP.HTTP 等网络响应. 看一个之前用过的例子 ...

  6. 应用“PUSH推送”的5个真相和5个误区

      真相一:用户厌烦的并不是推送功能本身 针对如何看待推送功能这一问题,对1万名用户进行了问卷调查,结果表明80%的用户表示不会拒绝推送功能.各个年龄段方面没有太大的差别,但女性用户更容易受个人兴趣和 ...

  7. P1002 谁拿了最多奖学金

    P1002 谁拿了最多奖学金 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖 ...

  8. asp.net mvc json数据缓存

    一些虚拟主机资源给的少, 如果直接用框架缓存, 估计内存就爆了吧, 如果不用缓存, 虚拟主机自带的数据库也是限制资源的, 访问多了就直接给timeout了, 用json文件形式缓存查询出来的数据, 虽 ...

  9. 清除的通用样式 css

    /*公共样式--开始*/ html, body, div, ul, li, h1, h2, h3, h4, h5, h6, p, dl, dt, dd, ol, form, input, textar ...

  10. markdown添加本地图片

    这是个坑 如果你的markdown在一个文件目录下,需要添加另一个目录下的图片,绝对路径是不可行的.需要 "迂回" 所谓 迂回,即需要先用../../命令返回上一文件目录,直至可以 ...