对 JDBC 做一个轻量地封装,顺便复习,熟悉sql,io,util,lang.Reflect等包的使用,泛型的使用,待完善。。。

package com.webproj.utils;

import java.io.IOException;
import java.io.InputStream;
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.util.Properties;

//用来获取数据库连接,PreparedStatement处理器对象,ResultSet结果集对象以及ResultSetMeataData对象等。
public class DBTools {
//因为是工具类,所以变量及方法全部静态
private static Connection conn=null;//数据库连接
private static PreparedStatement pStmt=null;//预处理器
private static ResultSet rs=null;//数据集
private static ResultSetMetaData metadata=null;//数据集中的元数据,包含列名,列的数据类型等等
private static String driver=null,url=null,user=null,password=null;//驱动名,数据库url,数据库登陆用户名,密码
private static String propertyFile="jdbc.properties";//存放driver,url,user,password的配置文件。

//类一加载,则开始读取Property配置文件并加载驱动。
static{
InputStream in=DBTools.class.getClassLoader().getResourceAsStream(propertyFile);
Properties pro=new Properties();
try {
pro.load(in);
driver=pro.getProperty("driver");
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取数据库连接
public static Connection getConn(){
try {
conn=DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//因为经常要获取 PreparedStatement对象,所以把获取该对象的方法抽取出来方便复用。
public static PreparedStatement getPStmt(String sql){
try {
pStmt=getConn().prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pStmt;
}
//将 PreparedStatement参数赋值抽离出来,因为经常用到
public static void setObjParameters(PreparedStatement pStmt,Object[] parameters){
for(int i=0;i<parameters.length;i++){
try {
pStmt.setObject(i+1, parameters[i]);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static int execUpdate(PreparedStatement pStmt){
int rowCount=0;
try {
rowCount=pStmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return rowCount;
}
//封装 DML 操作包括 INSERT,UPDATE 返回影响数据表行数
public static int execDML(String sql,Object[] parameters){
int rowCount=0;
pStmt=getPStmt(sql);
setObjParameters(pStmt,parameters);
rowCount=execUpdate(pStmt);
return rowCount;

//发现将方法封装起来,复用性可以提高。
}

//把获取 ResultSet 方法抽离出来,便于复用
public static ResultSet getResultSet(PreparedStatement pStmt){
try {
rs=pStmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}

//获取 查询的 count 数
public static int getRowCount(String sql,Object[] parameters){
int rowCount=0;
setObjParameters(pStmt,parameters);
rs=getResultSet(pStmt);
try {
while(rs.next()){
rowCount=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return rowCount;
}
public static void main(String[] args){
Connection conn=getConn();
if(conn!=null){
System.out.println("获取数据库连接成功!");
}
}
}

对 JDBC 做一个轻量封装,待完善。。。的更多相关文章

  1. vue-concise-slider 一个轻量的vue幻灯片组件

    vue-concise-slider 一个轻量的vue幻灯片组件 阅读 541 收藏 35 2017-07-03 原文链接:github.com 外卖订单处理有烦恼?试试美团点评餐饮开放平台吧,可实现 ...

  2. Day.js 是一个轻量的处理时间和日期的 JavaScript 库

    Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...

  3. Nancy总结(一)Nancy一个轻量的MVC框架

    Nancy是一个基于.net 和Mono 构建的HTTP服务框架,是一个非常轻量级的web框架. 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATC ...

  4. 自己写一个轻量的JqueryGrid组件

    接触mvc不久,突然没有了viewstate和服务端控件处处都觉得不顺手,很多在webform时不必要考虑的问题都出现在眼前,这其中分页时查询条件保持的问题又是最让我头疼的事情,权衡再三,决定用aja ...

  5. 在项目管理中如何保持专注,分享一个轻量的时间管理工具【Flow Mac版 - 追踪你在Mac上的时间消耗】

    在项目管理和团队作业中,经常面临的问题就是时间管理和优先级管理发生问题,项目被delay,团队工作延后,无法达到预期目标. 这个仿佛是每个人都会遇到的问题,特别是现在这么多的内容软件来分散我们的注意力 ...

  6. 曹工说Tomcat4:利用 Digester 手撸一个轻量的 Spring IOC容器

    一.前言 一共8个类,撸一个IOC容器.当然,我们是很轻量级的,但能够满足基本需求.想想典型的 Spring 项目,是不是就是各种Service/DAO/Controller,大家互相注入,就组装成了 ...

  7. 使用Hexo建立一个轻量、简易、高逼格的博客

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_93 在之前的一篇文章中,介绍了如何使用Hugo在三分钟之内建立一个简单的个人博客系统,它是基于go lang的,其实,市面上还有一 ...

  8. BlockCanary 一个轻量的,非侵入式的性能监控组件(阿里)

    开发者博客: BlockCanary — 轻松找出Android App界面卡顿元凶 开源代码:moduth/blockcanary BlockCanary对主线程操作进行了完全透明的监控,并能输出有 ...

  9. Cardinal:一个用于移动项目开发的轻量 CSS 框架

    Cardinal 是一个适用于移动项目的 CSS 框架,包含很多有用的默认样式.矢量字体.可重用的模块以及一个简单的响应式模块系统.Cardinal 提供了一种在多种移动设备上实现可伸缩的字体和布局的 ...

随机推荐

  1. mybatis源码分析(2)——事务概述

    这篇文章主要对mybatis中的事务做一简单的分析,帮助读者理清一些概念. 先来看看在JAVA事务的相关技术,在JAVA中有两类事务,JDBC事务和JTA事务,如果是JDBC类型的事务,则是由Conn ...

  2. zabbix通过jmx监控tomcat

    Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功.   2. ...

  3. easyui datagrid pagesize设置无效

  4. sharepoint 2010 列表数据分页控件介绍 pagination UserControl

    转:http://blog.csdn.net/chenxinxian/article/details/8714391 这里主要是介绍下最近开发的一个sharepoint列表或者文档库的分页控件,并且把 ...

  5. [Java]重载,重写以及继承,多态的区别

    转自:http://android.blog.51cto.com/268543/53181 什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承. ...

  6. sql server 自定义函数

    create function 函数名 (@pno int) returns int as begin declare @a int if not exists(select * from perso ...

  7. Linux和Windows下的进程管理总结

    在Windows和Linux下都可以很方便地列出当前运行的进程.Windows下可以使用组合键CTRL+ALT+DEL打开任务管理器,在进程选项卡中就列举出了当前运行的所有进程,除此之外还可以在命令行 ...

  8. 解决 VirtualBox 安装windows 8.1 Preview OR Server 2012 R2 Preview 错误

    安装windows 8.1 Preview 或 Server 2012 R2 Preview时提示错误 Your PC needs to restart 解决方法: 在cmd中输入以下代码执行即可: ...

  9. Eclipse的安装以及与Tomcat的集成

    1.下载indgo版本的Eclipse:http://www.eclipse.org(64位:eclipse-jee-indigo-SR2-win32-x86_64.zip) 2.解压到D:\Prog ...

  10. iOS开发 Xcode中的Info.plist字段含义

    Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.pli ...