这是目录结构:

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

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. 浅谈Obejct.assign

    Object.assign属于浅拷贝 Object.assign只能拷贝:可被枚举的属性,自有属性,string或者Symbol类型是可以被直接分配的 var ab={ name:"没有被覆 ...

  2. 0SGU 128 snake (&& ZOJ 3521) 尺取,排序二叉树,线段树 难度:2

    128. Snake time limit per test: 0.25 sec. memory limit per test: 4096 KB There are N points given by ...

  3. js相关小技巧

    1.清空type=file的input文件上传控件的内容,相当于重置.txtFile是该input的id $("#txtFile").val(""); $(&q ...

  4. 史前埃及(predynastic egypt)

    一个并不复杂的建造发展游戏,却十分有趣 安排工作-收集资源-招募工人-增加生产资源效率or建设科技-招募工人的模式 地表在建设后有明显的变化 同时也可以通过简单的动画展示工人的工作分配

  5. memmove 对同一个指针不操作

    memmove 对同一个指针不操作,所以调用memmove之前不用比较两个指针是否相同 void CTestDLLDlg::OnBnClickedButton6() { ; char* data = ...

  6. kafka知识点整理总结

    kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...

  7. iOS 去除警告 看我就够了

    你是不是看着开发过程中出现的一堆的警告会心情一阵烦躁,别烦躁了,看完此文章,消除警告的小尾巴. 一.SVN 操作导致的警告 1.svn删除文件后报错 ”xx“is missing from worki ...

  8. C++内存管理的原则

    内存管理原则,就是“谁创建,谁释放”或者说“谁申请,谁释放”. 简单地说,在代码上体现为,调用new或malloc等内存分配的人,同时需在内存使用完成后调用delete或free释放. 这个原则看似大 ...

  9. git中的分支管理

    /*游戏或者运动才能让我短暂的忘记心痛,现如今感觉学习比游戏和运动还重要——曾少锋*/ 如果对git基础不太熟悉的可以参考:http://www.cnblogs.com/zengsf/p/750621 ...

  10. [LeetCode&Python] Problem 811. Subdomain Visit Count

    A website domain like "discuss.leetcode.com" consists of various subdomains. At the top le ...