java学习笔记37(sql工具类:JDBCUtils)
在之前的内容中,我们发现,当我们执行一条语句时,每新建一个方法,就要重新连接一次数据库,代码重复率很高,那么能不能把这些重复代码封装成一个类呢,我们学习方法时,就学习到方法就是为了提高代码的利用率,所以我们就想能不能封装一个类,把链接数据库,关闭流等封装成方法,这样就大大减少了代码量,实现代码的整洁行,也更符合面对对象的思维。具体实现如下:
package JDBCUtils; import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties; public class JDBCUtils {
private static String driver;
private static String url;
private static String dbuser;
private static String dbpwd;
private static Connection conn = null;
// 静态代码块
static{
/*在之前我们读文件时,用的方法是
* InputStream in =new FileInputStream("E:\ideaProject\AAAstudys\d38\src\sql.properties");
* 在这里写新的方法,将外部properties文件放在src文件夹中,用类的加载器读文件,格式:
* 当前类名.class.getClassLoader().getResourceAsStream("外部文件名");*/
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("sql.properties");
Properties p=new Properties();
try {
p.load(in);
} catch (IOException e) {
e.printStackTrace();
}
// 读文件给变量赋值
driver = p.getProperty("driver");
url = p.getProperty("url");
dbuser = p.getProperty("dbuser");
dbpwd = p.getProperty("dbpwd");
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 构造获得数据库链接方法
public static Connection getConnection() {
try {
conn = DriverManager.getConnection(url, dbuser, dbpwd);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// 构造关闭流的方法
public static void close(Connection conn,Statement stat) {
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 重载关闭流的方法
public static void close(Connection conn,Statement stat, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
测试类:
package JDBCUtils; import java.sql.Connection;
import java.sql.Statement; public class Test2 {
public static void main(String[] args) throws Exception {
Connection conn = JDBCUtils.getConnection();
String sql = "update sort set sname='迪迦' where sid=2";
Statement stat = conn.createStatement();
stat.executeUpdate(sql);
JDBCUtils.close(conn,stat);
}
}
外部sql.properties文件:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/qy97
dbuser=root
dbpwd=123456
java学习笔记37(sql工具类:JDBCUtils)的更多相关文章
- Java学习笔记七——数组工具类Arrays
数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...
- 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理
在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...
- java学习笔记07--日期操作类
java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...
- java学习笔记之日期日历类
java学习笔记之日期日历 Date日期类概述: 表示特定的瞬间,精确到毫秒 Date类的构造方法: 1.空参数构造方法 Date date = new Date(); 获取到当前操作系统中的时间和日 ...
- Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)
Math类:数学工具类,做一些数学计算,开方,对数,三角函数等 所有方法都是静态方法,不需要建立对象,直接用类名调用即可 示例: 这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即 ...
- java学习-加载.properties工具类
javaWeb项目,要加载xxx.properties或其它如.txt, .md后缀的文本文件 文本内容有两种格式 key:value或者key=value 诸如Spring框架,Jfinal框架,都 ...
- 【初学Java学习笔记】SQL语句调优
1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...
- [Guava学习笔记]Collections: 集合工具类
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3861431.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- Java学习笔记37(字节流)
输出:程序到文件 输入:文件到程序 字节输出流:OutputStream类 作用:在java程序中写文件 这个类是抽象类,必须使用它的子类 方法: 写入: package demo; import j ...
随机推荐
- Html ul、dl、ol 标签
Html ul.dl.ol 标签 <html> <body> <!-- ul 标签指定字符断点,左边带一个“·”点--> <ul> <!-- li ...
- Python 协程了解
协程: 1.协程,又称微线程,纤程.英文名Coroutine. 2.协程是跑在线程内的单线程,串行没有锁. 3.协程是一种用户态的轻量级线程. 4.协程CPU是访问不到的,协程是用户自己控制的. ...
- Linux rsync同步
rsync介绍 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文 ...
- linux svn客户端安装
yum install -y subversion svn checkout使用示例: 先创建一个目录,例如:mkdir test 检出到test目录下 svn checkout svn://192. ...
- opencv学习之路(23)、轮廓查找与绘制(二)——访问轮廓每个点
一.简介 二.画出每个轮廓的每个点 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src= ...
- linux基础之grep
grep: Global search REgular expression and Print out the line 作用: 文本搜索工具,根据用户指定的模式对目标文本逐行进行匹配检查,打印匹配 ...
- TASE2017
PATTERN系列之五 I. Introduction To ease the expression of real-time requirements, Dwyer, and then Konrad ...
- Query the tables and index which will caus rebuild index fail
On MSSQL server database, while rebuild index failed, we can use the follow sql statement to see if ...
- npm 升降级
npm 降级 $ npm -v 6.4.1 $ sudo npm install npm@4 -g /usr/bin/npm -> /usr/lib/node_modules/npm/bin/n ...
- 基于Xshell使用密钥方式连接远程主机
基于Xshell使用密钥方式连接远程主机 连接远程主机,就验证身份而言,一般有两种方式,一种是通过用户密码:另一种通过公钥的方式(Public Key). 图1 xshell支持验证登录用户的方式 下 ...