我的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大特 ...
随机推荐
- HeadFirstJava
java执行过程的来龙去脉 源代码——编译器——输出——java虚拟机 扩展名为.java ——扩展名为.class 不要直接用类名点变量来改变属性值,一般都用get.set方法.封装的基本原则:将你 ...
- Memcached 扩展常用方法
保存数据 向memcached保存数据的方法有 add replace set 它们的使用方法都相同: $add = $memcached->add( '键', '值', '期限' ); $re ...
- es6 规范 的 具体用法 -- 待续
链接 1. const 表示不会被重新赋值的, 包括了不会被修改的, const 可以被修改, 但是不会被整体覆盖 由于是静态分析, const 相对 let 执行效率 更高 2. 模板字符串 ...
- java.c++.c#.c的区别
C++则一般看作是对C语言的扩展. Java语言是一种完全的面向对象语言,虽然它的底层(运行时库)是用C语言开发的,可是并不依赖于C. C#是微软开发的一种编程语言,语法类似Java,几乎就是从Jav ...
- UI基础:UI中类的继承关系图,最基本的视图分析
首先,UI中常用的UIwindow.UILabel.UIButton.UITextField属于UIView的子类.UITextField和UILabel和UIwindow自身没有初始化方法,需要使用 ...
- Texas Instruments matrix-gui-2.0 hacking -- submenu.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- OLED的相关信息
有2种方式与OLED模块相连接,一种是8080的并口方式,另一种是4线SPI方式. ALIENTEK OLED 模块的 8080 接口方式需要如下一些信号线:CS: OLED 片选信号.WR:向 OL ...
- HUD 1969:Pie(二分)
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- Windows10中启用原来的Windows照片查看器方法
前言: ============================================== Windows10 版系统自带很多垃圾应用,图片查看器弄得很不好用,还是习惯Windows7的,自 ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
本篇是在上一篇的基础上添加日志功能,并记录NLog在Asp.Net Core里的使用方法. 第一部分:默认Logger支持 一.project.json添加日志包引用,并在cmd窗口使用 dotnet ...