这是目录结构:

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

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. bootstrap的学习总结

    1.bootstrap是一个css框架,它提供了很多类,这些类中实现了内外边距,颜色,大小等样式的封装,它还提供了很多常用插件可以直接使用 2.12栅格本质上是将标签的外边距和内边距通过“格子”的思想 ...

  2. 数据结构(C语言)关于查找与排序

    1)利用readData()函数从data1.txt中读入不同规模的数据存入数组,编写基于数组的顺序查找算法,测试数据量为1万.5万.10万.20万.30万.40万和50万时的数据查询时间. 算法代码 ...

  3. java学习笔记 --- 集合(续)

    1.map集合 1.1.特点:将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.Map集合和Collection集合的区别? Map集合存储元素是成对出现的,Map集 ...

  4. JAVA第5次作业

    将指定目录下的所有文件显示到列表框(JList)组件中,如下图所示: import java.awt.BorderLayout; import java.awt.Color; import java. ...

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

    stream应用一图片转存服务 stream github教程 文件操作和网络都依赖了一个很重要的对象—— Stream, 而这个 <node深入浅出> 没有分析的, 所以读完这本书, 在 ...

  6. 为什么在开发中大部分的时候都在用session而Application基本上都不去使用?

    问题描述 为什么在开发中大部分的时候都在用session而Application基本上都不去使用? 为什么在开发中大部分的时候都在用session而Application基本上都不去使用?为什么在开发 ...

  7. 玩转TypeScript(3)--类型转换

    使用强类型变量常常需要从一种类型向另一种类型转换,通常使用ToString或ParseInt可以来实现一些简单的转换,但是有时候需要像.NET语言中那样将一种类型显示的转换为另一种类型,在TypeSc ...

  8. fiddler Android抓包与弱网

    tools rules-ctrl+R 搜索 oSession["request-trickle-delay"] = rules-perfromance-simulate modem ...

  9. 大家一起做训练 第一场 G CD

    题目来源:UVA 624 题目的意思就是:我现在需要从 t 张CD中拿出一部分来,尽可能的凑出接近 N 这么久的音乐,但是不能超过 N. CD不超过20张,每张长度不超过 N ,不能重复选. 一个很简 ...

  10. Word所有字体按比例缩小

    ctrl + [ 不然每次都要一部分一部分的修改啊