对 JDBC 做一个轻量封装,待完善。。。
对 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 做一个轻量封装,待完善。。。的更多相关文章
- vue-concise-slider 一个轻量的vue幻灯片组件
vue-concise-slider 一个轻量的vue幻灯片组件 阅读 541 收藏 35 2017-07-03 原文链接:github.com 外卖订单处理有烦恼?试试美团点评餐饮开放平台吧,可实现 ...
- Day.js 是一个轻量的处理时间和日期的 JavaScript 库
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...
- Nancy总结(一)Nancy一个轻量的MVC框架
Nancy是一个基于.net 和Mono 构建的HTTP服务框架,是一个非常轻量级的web框架. 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATC ...
- 自己写一个轻量的JqueryGrid组件
接触mvc不久,突然没有了viewstate和服务端控件处处都觉得不顺手,很多在webform时不必要考虑的问题都出现在眼前,这其中分页时查询条件保持的问题又是最让我头疼的事情,权衡再三,决定用aja ...
- 在项目管理中如何保持专注,分享一个轻量的时间管理工具【Flow Mac版 - 追踪你在Mac上的时间消耗】
在项目管理和团队作业中,经常面临的问题就是时间管理和优先级管理发生问题,项目被delay,团队工作延后,无法达到预期目标. 这个仿佛是每个人都会遇到的问题,特别是现在这么多的内容软件来分散我们的注意力 ...
- 曹工说Tomcat4:利用 Digester 手撸一个轻量的 Spring IOC容器
一.前言 一共8个类,撸一个IOC容器.当然,我们是很轻量级的,但能够满足基本需求.想想典型的 Spring 项目,是不是就是各种Service/DAO/Controller,大家互相注入,就组装成了 ...
- 使用Hexo建立一个轻量、简易、高逼格的博客
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_93 在之前的一篇文章中,介绍了如何使用Hugo在三分钟之内建立一个简单的个人博客系统,它是基于go lang的,其实,市面上还有一 ...
- BlockCanary 一个轻量的,非侵入式的性能监控组件(阿里)
开发者博客: BlockCanary — 轻松找出Android App界面卡顿元凶 开源代码:moduth/blockcanary BlockCanary对主线程操作进行了完全透明的监控,并能输出有 ...
- Cardinal:一个用于移动项目开发的轻量 CSS 框架
Cardinal 是一个适用于移动项目的 CSS 框架,包含很多有用的默认样式.矢量字体.可重用的模块以及一个简单的响应式模块系统.Cardinal 提供了一种在多种移动设备上实现可伸缩的字体和布局的 ...
随机推荐
- mybatis源码分析(2)——事务概述
这篇文章主要对mybatis中的事务做一简单的分析,帮助读者理清一些概念. 先来看看在JAVA事务的相关技术,在JAVA中有两类事务,JDBC事务和JTA事务,如果是JDBC类型的事务,则是由Conn ...
- zabbix通过jmx监控tomcat
Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功. 2. ...
- easyui datagrid pagesize设置无效
- sharepoint 2010 列表数据分页控件介绍 pagination UserControl
转:http://blog.csdn.net/chenxinxian/article/details/8714391 这里主要是介绍下最近开发的一个sharepoint列表或者文档库的分页控件,并且把 ...
- [Java]重载,重写以及继承,多态的区别
转自:http://android.blog.51cto.com/268543/53181 什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承. ...
- sql server 自定义函数
create function 函数名 (@pno int) returns int as begin declare @a int if not exists(select * from perso ...
- Linux和Windows下的进程管理总结
在Windows和Linux下都可以很方便地列出当前运行的进程.Windows下可以使用组合键CTRL+ALT+DEL打开任务管理器,在进程选项卡中就列举出了当前运行的所有进程,除此之外还可以在命令行 ...
- 解决 VirtualBox 安装windows 8.1 Preview OR Server 2012 R2 Preview 错误
安装windows 8.1 Preview 或 Server 2012 R2 Preview时提示错误 Your PC needs to restart 解决方法: 在cmd中输入以下代码执行即可: ...
- Eclipse的安装以及与Tomcat的集成
1.下载indgo版本的Eclipse:http://www.eclipse.org(64位:eclipse-jee-indigo-SR2-win32-x86_64.zip) 2.解压到D:\Prog ...
- iOS开发 Xcode中的Info.plist字段含义
Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.pli ...