java基础之JDBC三:简单工具类的提取及应用
简单工具类:
public class JDBCSimpleUtils {
/**
* 私有构造方法
*/
private JDBCSimpleUtils() {
}
/**
* 驱动
*/
public static String driver = null;
/**
* 连接字符串
*/
public static String url = null;
/**
* 用户名
*/
public static String user = null;
/**
* 密码
*/
public static String password = null;
/**
* 读取配置文件, 并将读取到的值赋值给变量.
*/
public static void readConfig() {
try {
//读取properties配置文件给变量赋值
Properties pp = new Properties();
pp.load(new FileReader("day04_classTest\\src\\config.properties"));
url = pp.getProperty("url");
user = pp.getProperty("username");
driver = pp.getProperty("driver");
password = pp.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 静态代码块
* 变量赋值
* 并注册驱动
*/
static {
try {
//变量赋值
readConfig();
//注册驱动
Class.forName(driver);
} catch (Exception e) {
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
e.printStackTrace();
}
}
/**
* 获取Connection
*
* @return 数据库连接
*/
public static Connection getConnection() {
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException ex) {
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
ex.printStackTrace();
return null;
}
}
public static Statement getStatement(Connection conn) {
if (conn == null) {
return null;
}
try {
return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// 设置数据集可以滚动,可以更新
} catch (SQLException ex) {
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
release(conn);
}
return null;
}
/**
* 获取一个带参数的 PreparedStatement
* 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
*
* @param conn 数据库连接
* @param cmdText 需要 ? 参数的 SQL 语句
* @param cmdParams SQL 语句的参数表
* @return 如果获取失败将返回 null,调用时记得检查返回值
*/
public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object... cmdParams) {
if (conn == null) {
return null;
}
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
int i = 1;
for (Object item : cmdParams) {
pstmt.setObject(i, item);
i++;
}
} catch (SQLException e) {
e.printStackTrace();
release(conn, pstmt);
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
}
return pstmt;
}
/**
* 释放资源
*
* @param conn Connection
* @param stat Statement
* @param rs ResultSet
*/
public static void release(Connection conn, Statement stat, ResultSet rs) {
try {
if (rs != null) {
rs.close();
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
} finally {
try {
if (stat != null) {
stat.close();
stat = null;
}
} catch (SQLException e) {
e.printStackTrace();
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
} finally {
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
}
}
}
}
/**
* 释放资源
*
* @param conn Connection
* @param stat Statement
*/
public static void release(Connection conn, Statement stat) {
try {
if (stat != null) {
stat.close();
stat = null;
}
} catch (SQLException e) {
e.printStackTrace();
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
} finally {
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
}
}
}
/**
* 释放资源
*
* @param conn Connection
*/
public static void release(Connection conn) {
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
//写入日志
//Logger.WriteLog(JDBCUtils.class.getName(),"");
}
}
}
简单工具类的应用:
/**
* 增删改的方法
*
* @param sql
* @param obj
*/
private static void executeNoQuery(String sql, Object... obj) {
//获取Connection
Connection conn = JDBCSimpleUtils.getConnection();
//获取PreparedStatement
PreparedStatement ps = JDBCSimpleUtils.getPreparedStatement(conn, sql, obj);
try {
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("ok");
} else {
System.out.println("error");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCSimpleUtils.release(conn, ps);
}
} /**
* 查询返回ResultSet
*
* @param sql
*/
private static void getResultSet(String sql) {
//获取Connection
Connection conn = JDBCSimpleUtils.getConnection();
//获取Statement
Statement stat = JDBCSimpleUtils.getStatement(conn);
ResultSet rs = null;
try {
rs = stat.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("uid");
String name = rs.getString("uname");
String psw = rs.getString("psw");
System.out.println(id + "--" + name + "--" + psw);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCSimpleUtils.release(conn, stat, rs);
}
}
java基础之JDBC三:简单工具类的提取及应用的更多相关文章
- 黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API
---------- android培训.java培训.期待与您交流! ---------- 一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制 ...
- Java基础---泛型、集合框架工具类:collections和Arrays
第一讲 泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类 ...
- 2015年11月26日 Java基础系列(三)ThreadLocal类初级学习
序,ThreadLocal类是为了解决多线程的安全问题.线程安全的意思也就是说每个线程操作自己的变量,不要对其他线程的值造成影响. 在很多情况下,ThreadLocal比直接使用synchronize ...
- DbUtils是Apache出品一款简化JDBC开发的工具类
DbUtils - DbUtils是Apache出品一款简化JDBC开发的工具类 - 使用DbUtils可以让我们JDBC的开发更加简单 - DbUtils的使用: ...
- Java基础-IO流对象之字符类(FileWrite与FileReader)
Java基础-IO流对象之字符类(FileWrite与FileReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见编码简介 1>ASCII 我们知道计算机是 ...
- java基础(29):JDBC、DBUtils
1. JDBC 1.1 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问 ...
- java基础(11) -JDBC
java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...
- Java基础-进程与线程之Thread类详解
Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...
- Java基础-IO流对象之File类
Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...
随机推荐
- 利用selenium webdriver点击alert提示框
在进行元素定位时常常遇到这样的alert框: 那么该如何定位并点击确定或取消按钮呢?stackoverflow上找到了这个问题的答案. OK, Show you the code: driver.fi ...
- TeamTalk源码分析(十) —— 开放一个TeamTalk测试服务器地址和几个测试账号
由于TeamTalk是用于企业内部的即时通讯软件,一般客户端并不提供账号注册功能.如果你仅对TeamTalk的客户端感兴趣,你可以仅仅研究pc端和移动端代码.官方的测试服务器地址已经失效,所以我已经部 ...
- FlycoTabLayout 从头到脚
简介 FlycoTabLayout,是一个比Google原生TabLayout 功能更强大的TabLayout库.目前有3种TabLayout: SlidingTabLayout CommonTabL ...
- 使用LNMP环境安装typecho博客的全程记录
虽然我是搞asp.net的 但是十分欣赏php,php有很多开源的博客程序 比如大名鼎鼎的Wordpress.还有各种独立博客大牛使用的z-blog,以及短小精悍的emblog. wordpress臃 ...
- The Pragmatic Programmer 摘要评注
这本书与其说是一本编程书,倒不如说是一本教做人的书.很多时候项目的进行依赖于技术以外的因素,比如说沟通,人的品格,人际,处理问题的方法.在未来的一度日子会陆续添加个人认为值得学习的内容.
- Oracle 实用技巧
一.rlwrap 在 linux中使用sqlplus对数据库进行操作,常常由于敲错命令或需要反复执行某条语句,需要像linux本身有的历史回调的功能, rlwrap 可以用来支持oracle下sqlp ...
- Python之xpath
xpath是一种在XML文档中定位元素的语言,常用于xml.html文件解析,比css选择器使用方便XML文件最小构成单元: - element(元素节点) - attribute(属性节点) - t ...
- Windows 7 扩展玻璃效果(Aero Glass)
转自:http://www.cnblogs.com/gnielee/archive/2010/10/04/windows7-extend-aero-glass.html Windows 7 操作系统默 ...
- 七、Jmeter + ant + jenkins轻量级接口自动化测试
七.Jmeter + ant + jenkins轻量级接口自动化测试 杀猪不用牛刀,工具没有牛逼高大尚之分,每个工具都有存在的理由:关键是看会不会用,怎么用,有没有用在合适的地方. 需要安装的工具: ...
- oracle11g,安装失败,提示找不到文件,win7 64位下报错
提示: 未找到文件 E:\app\Administrator\product\11.2.0\dbhome_5\owb\external\oc4j_applications\applications\W ...