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技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...
随机推荐
- 使用macbook破解WPA/WPA2 wifi密码
文本仅供学习交流. 我使用的系统是macbook pro 15: 安装aircrack-ng 使用homebrew安装,命令: brew install aircrack-ng 抓包-抓取带密码的握手 ...
- php str_pad() 用法
$temp = str_pad(" ", 10000); for($i=0;$i<20;$i++){ echo $temp; echo $i; sle ...
- 【面试季之三】IE6兼容问题
最近面试真的碰到很多基础的问题,平时在工作的时候往往可以直观的看到页面的问题,然后进行代码调试,调试不明白了还可以上网查一下.可是面试的时候,就是得当场反应出来,并且还得能系统的说出1.2.3.4.5 ...
- Scrapy组件之item
Scrapy是一个流行的网络爬虫框架,从现在起将陆续记录Python3.6下Scrapy整个学习过程,方便后续补充和学习.Python网络爬虫之scrapy(一)已经介绍scrapy安装.项目创建和测 ...
- js错误Cannot set property 'action' of null
Cannot set property 'action' of null [自己解决问题答案] 应该放到form里面 [网上答案]是页面无法加载完毕执行代码.可以把获取元素等一系列的操作放在 wind ...
- CMCC有限的访问权限如何解决
最近两天一直出现这个问题,连接CMCC-EDU的时候就是连接不上,提示有限的访问权限,什么诊断和修复IP自动获取都不管用,就是连接不上.怎么说本人也是一个电脑迷,越到这样不靠谱的问题确实不知道如何解决 ...
- map/reduce类简单介绍
在Hadoop的mapper类中,有4个主要的函数,分别是:setup,clearup,map,run.代码如下: protected void setup(Context context) thro ...
- .NET程序如何启动?
.net程序如何启动? .NET Framework在Windows平台顶部运行,这意味着.NET Framework必须使用 windows可以理解的技术来构建.首先,所有托管模块和程序集文件都必须 ...
- PHP 操作XML文档
<<<操作符需PHP5.3以上版本才能支持,下面程序在wamp环境下测试完成. <?php // Set the content type to be XML, so that ...
- dpkg安装工具
dpkg --info "软件包名" --列出软件包解包后的包名称. dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa) ...