我的JdbcUtils类
这是目录结构:

其中后面三个类都是第一个类的子类,第一个类是父类。
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类的更多相关文章
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)
近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...
- 自定义的jdbc连接工具类JDBCUtils【java 工具类】
JDBCUtils 类设计: 1. 创建私有的属性*(连接数据库必要的四个变量):dreiver url user password 2. 将构造函数私有化 3.将注册驱动写入静态代码块 4.外界只能 ...
- JDBCUtils工具类
JdbcUtils.java import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource ...
- 基于durid的JDBCUtils工具类
1.JDBCUtils类 package com.alphajuns.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; impo ...
- Javaweb学习笔记——(十七)——————JDBC的原理、四大核心类、四大参数、预编译、Dao模式、批处理、大数据、时间类型的转换
JDBC入门 *导入jar包:驱动 *加载驱动类:Class.forName("类名"); *给出url.username.password,其中url背下来 *使用DriverM ...
- day17(JDBC入门&jdbcUtils工具介绍)
day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...
- JdbcUtils 小工具
// 第一版 // src 目录下 dbconfig.properties 配置文件, 用来配置四大参数 // 注意 properties 配置文件中没有分号结尾, 也没有引号 driverClass ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
随机推荐
- Mysql 分区表-分区操作
一.查看MySQL是否支持分区 1.MySQL5.6以及之前版本 show variables like '%partition%'; 2.MySQL5.7 show plugins; 二.分区表的分 ...
- ADOX创建ACCESS 表时,几个附加属性
中文 英文 允许空字符串 Jet OLEDB:Allow Zero Length Unicode压缩 Jet OLEDB:Compressed UNICODE Strings 有效性规则 Jet ...
- java web中的多条件查询
转自:http://blog.csdn.net/xulu_258/article/details/46623317 所谓多条件查询即为用户输入想要查询的条件,然后根据用户输入的条件进行查询. 当用户有 ...
- 特征选择: 卡方检验、F 检验和互信息
特征选择是特征工程中的重要一环,其主要目的是从所有特征中选出相关特征 (relevant feature),或者说在不引起重要信息丢失的前提下去除掉无关特征 (irrelevant feature) ...
- NodeJS 难点(网络,文件)的 核心 stream 四: writable
什么是可写流 白板 可写流是对数据流向设备的抽象,用来 消费 上游流过来的数据 通过可写流程序可以把数据写入设备, 常见的是 本地磁盘文件或者 TCP.HTTP 等网络响应. 看一个之前用过的例子 ...
- 应用“PUSH推送”的5个真相和5个误区
真相一:用户厌烦的并不是推送功能本身 针对如何看待推送功能这一问题,对1万名用户进行了问卷调查,结果表明80%的用户表示不会拒绝推送功能.各个年龄段方面没有太大的差别,但女性用户更容易受个人兴趣和 ...
- P1002 谁拿了最多奖学金
P1002 谁拿了最多奖学金 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖 ...
- asp.net mvc json数据缓存
一些虚拟主机资源给的少, 如果直接用框架缓存, 估计内存就爆了吧, 如果不用缓存, 虚拟主机自带的数据库也是限制资源的, 访问多了就直接给timeout了, 用json文件形式缓存查询出来的数据, 虽 ...
- 清除的通用样式 css
/*公共样式--开始*/ html, body, div, ul, li, h1, h2, h3, h4, h5, h6, p, dl, dt, dd, ol, form, input, textar ...
- markdown添加本地图片
这是个坑 如果你的markdown在一个文件目录下,需要添加另一个目录下的图片,绝对路径是不可行的.需要 "迂回" 所谓 迂回,即需要先用../../命令返回上一文件目录,直至可以 ...