JDBC一般流程及优化过程

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Base {

 	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		template(); 

	}
	static void template() throws SQLException, ClassNotFoundException {
		// 1.注册驱动
		//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
		//System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
		Class.forName("com.mysql.jdbc.Driver");// 推荐方式

		// 2.建立连接
		String url = "jdbc:mysql://localhost:3306/jdbc";
		String user = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, user, password);

		// 3.创建语句
		Statement st = conn.createStatement();

		// 4.执行语句
		ResultSet rs = st.executeQuery("select * from user");

		// 5.处理结果
		while (rs.next()) {
			System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t"
					+ rs.getObject(3) + "\t" + rs.getObject(4));
		}

		// 6.释放资源
		rs.close();
		st.close();
		conn.close();
	}
}

由上面的代码可知:JDBC一般的处理过程分为六个步骤

  1. 注册驱动
  2. 建立连接
  3. 创建语句
  4. 执行语句
  5. 处理结果
  6. 释放资源

上面的代码不够严谨,需要优化。

优化后的代码如下:抽出可重复性使用的代码工具类

public final class JdbcUtils {
	private static String url = "jdbc:mysql://localhost:3306/jdbc";
	private static String user = "root";
	private static String password = "123456";

	private JdbcUtils() {
	}
        //JVM加载类时就进行驱动注册
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}

	public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url, user, password);
	}

	public static void free(ResultSet rs, Statement st, Connection conn) {
		try {
			if (rs != null)
				rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (st != null)
					st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				if (conn != null)
					try {
						conn.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
			}
		}
	}
}

优化模板代码如下:

public class Base {

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		template(); 

	}

	static void template() throws Exception {
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			// 2.建立连接
			conn = JdbcUtils.getConnection();
			// conn = JdbcUtilsSing.getInstance().getConnection();
			// 3.创建语句
			st = conn.createStatement();

			// 4.执行语句
			rs = st.executeQuery("select * from user");

			// 5.处理结果
			while (rs.next()) {
				// 参数中的1,2,3,4是指sql中的列索引
				System.out.println(rs.getObject(1) + "\t" + rs.getObject(2)
						+ "\t" + rs.getObject(3) + "\t" + rs.getObject(4));
			}
		} finally {
			JdbcUtils.free(rs, st, conn);
		}

	}
时间: 2025-01-05 11:42:08

JDBC一般流程及优化过程的相关文章

某系统单点登录性能测试诊断分析优化过程

某系统单点登录性能测试诊断分析优化过程 原因说明 下面描述的是前段时间协助本地一家上市IT公司做产品技术选型时对他们的技术框架进行性能测试与优化过程记录,因测试过程中涉及数据库选型和各类问题的监控分析优化,篇幅比较大,本次主要是描述在同样基础软硬件下.同样应用工程包和框架.同样数据量下,针对MYSQL环境下进行单点登录压力测试的结果过程记录. 初始环境配置 测试内容 1.            用户登录,首页查看,退出 2.  某业务交易新增.查询.删除.上传文件 3.  业务审批流程创建.提交

数据同步那些事儿(优化过程分享)

简介 很久之前就像写这篇文章了,主要是介绍一下我做数据同步的过程中遇到的一些有意思的内容,和提升效率的过程. 当前在数据处理的过程中,数据同步如同血液一般充满全过程,如图: 数据同步开源产品对比: DataX,是淘宝的开源项目,可惜不支持Postgresql Sqoop,Apache开源项目,同步过程中字段需要严格一致,不方便扩展,不易于二次开发 整体设计思路: 使用生产者消费者模型,中间使用内存,数据不落地,直接插入目标数据 优化过程: 1.插入数据部分: 首先生产者通过Jdbc获取源数据内容

采用DTO和DAO对JDBC程序进行进一步优化

采用DTO和DAO对JDBC程序进行进一步优化 DTO:数据传输对象,主要用于远程调用等需要远程调用对象的地方DAO:数据访问对象,主要实现封装数据库的访问,通过它可以把数据库中的表转换成DTO类 引入DTO其实就是新建实体类. 那么DAO呢,就是封装访问数据的方法,比如对某一个表插入,更新,删除等方法可以放进对应的dao中 代码如下: 这是访问User表所使用方法的接口,里面放的是访问过程中会使用到时方法 public interface UserDao { public void save(

20M文件从30秒到1秒的优化过程

压缩20M文件从30秒到1秒的优化过程 有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去.之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间.压缩文件的代码如下. public static void zipFileNoBuffer() { File zipFile = new File(ZIP

6.流程类优化

网优四大部分优化 覆盖类优化 容量类优化 功率类优化(干扰类优化) 流程类优化 按照流程的步骤,一步步分析优化,与流程相关的优化 入网初始接入,重入网,切换,寻呼,位置更新等 所有制式的状态,发生的变化都是类似的. 空闲状态rrc idle 连接状态rrc connected 状态转移 都是伴随信令交互来变化的 非正常驻留:没有CM卡,只能拨打紧急电话 寻呼:为了快速做业务时入网的定义 业务流程(信令) 常见:入网(开机驻留),接入(做业务),切换,位置更新 小区选择(最优信号排序,记忆优先),

高斯模糊算法的全面优化过程分享(二)。

      相关链接: 高斯模糊算法的全面优化过程分享(一) 在高斯模糊算法的全面优化过程分享(一)一文中我们已经给出了一种相当高性能的高斯模糊过程,但是优化没有终点,经过上一个星期的发愤图强和测试,对该算法的效率提升又有了一个新的高度,这里把优化过程中的一些心得和收获用文字的形式记录下来. 第一个尝试   直接使用内联汇编替代intrinsics代码(无效) 我在某篇博客里看到说intrinsics语法虽然简化了SSE编程的难度,但是他无法直接控制XMM0-XMM7寄存器,很多指令中间都会用内

【夯实Mysql基础】记一次mysql语句的优化过程!

1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使用了 2个 order by和 1个limit的分页 sql. 一个sql是上一个sql的count(*),即链接了5个表,当然没有limit了(取总数). 2. [着手优化] 1)[优化思路] 第一条是 做client调用 service层的数据缓存 第二条就是 优化sql本身. 这里着重讲一下

Redis数据导入工具优化过程总结

Redis数据导入工具优化过程总结 背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻辑处理, 并添加索引(redis集合): 工具完成后,性能是个瓶颈: 优化效果 使用了2个样本数据测试: 样本数据a表8763 条记录: b表940279 条记录: 优化前,a表耗时11.417s: 优化后,a表耗时1.883s: 用到的工具 gprof, pstrace,time 使用time工具

Kali Linux 优化过程

修改输入法横向候选字 vim ~/.config/fcitx/conf fcitx-classic-ui.config 修改此行 为 false  :VerticalList=False   mb这玩意百度真不好找  fuck一句 web版酷狗 http://forum.ubuntu.org.cn/viewtopic.php?t=287968 Netspeed显示当前网络上传下载速度 apt-get install netspeed Alt+鼠标右键面板选择Add to Panel,添加nets