这是目录结构:

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

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. pythoon 学习资源

    https://github.com/zhu327/forum http://www.ziqiangxuetang.com/django/django-tutorial.html

  2. 我的一起开源网 www.17ky.net上线了

    .net开源生态的落后,使得.net开发人员所拥有的开源资源比其他语言的开发者少了很多,这也使得笔者很早之前就喜欢收集各种开源项目,经常会去逛codeplex,开源中国社区等网站,同时也喜欢在自己或公 ...

  3. delphi中TQueue的使用问题

    TQueue里存放的是指针,所要存储的内容最好建立在堆上,在pop方法之后释放掉这个空间. 实例代码: MMSQueue:= TQueue.Create; MMSQueue.Push(StrNew(P ...

  4. windowns 下备份mysql数据库

    @echo off & setlocal ENABLEEXTENSIONS :: ---------- 配置项 ---------- :: 备份放置的路径,加 \ set BACKUP_PAT ...

  5. anu - reactIE

    import { options } from "./util"; import { Children } from "./Children"; import ...

  6. 三步解决 vue 按需加载

    1  webpack 的 output 配置 chunkFleName 树干名称: " chunks/[name]-[chunkhash:8].js  " 这一步是配合第三步, 生 ...

  7. SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息

    上一篇讲到的本地推送是普通的消息推送,本篇要讲一下带按钮动作的推送消息,先上个图瞅瞅: 继上一篇的内容进行小小的改动: 在didFinishLaunchingWithOptions方法内进行以下修改 ...

  8. Global.asax 详解

    在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序. 在Global.asax.cs文件中 protected void ...

  9. linux shell except tcl login ssh Automatic interaction

    /*************************************************************************************** * linux she ...

  10. GPIO口的输入输出模式

    1.浮空输入  GPIO_Mode_IN_FLOATING       2.带上拉输入  GPIO_Mode_IPU       3.带下拉输入  GPIO_Mode_IPD       4.模拟输入 ...