JdbcUtils 小工具
// 第一版
// src 目录下 dbconfig.properties 配置文件, 用来配置四大参数
// 注意 properties 配置文件中没有分号结尾, 也没有引号
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb1
username=root
password=root
// JdbcUtils 类
public class JdbcUtils{
public static Connection getConnection()
throws IOException, ClassNotFoudException,SQLException{
// 加载配置文件
// 因为配置文件在 src 目录下
InputStream in = JdbcUtils.class.getClassLoader()
.getResourceAsStream("dbconfig.properties");
// 使用 properties 集合的 load() 方法,
// 将输入流中的内容加载到 properties 集合中
Properties props = new Properties();
props.load(in);
// 加载驱动类
Class.forName(props.getProperty("driverClassName"));
// 获取 Connection 对象
return DriverManager.getConnection(
props.getProperty("url"),
props.getProperty("username"),
props.getProperty("password")
);
}
}
// 第一次升级
// 如果两次调用 JdbcUtils.getConnection() 方法,需要加载两次配置文件.
// 驱动类也需要执行多次. 而实际上, 配置文件和驱动类只需要加载一次即可
public class JdbcUtils{
private static Properties props = null;
// 静态代码块, 只在 JdbcUtils 加载时, 执行一次该代码块
static{
// 给 props 进行初始化, 即加载 dbconfig.properties 配置文件到 props 对象中
try{
InputStream in = JdbcUtils.class.getClassLoader()
.getResourceAsStream("dbconfig.properties");
props = new Properties();
props.load(in);
}catch(IOException e){
throw new RuntimeException(e);
}
// 加载驱动类
try{
Class.forName(props.getProperty("driverClassName"));
}catch(ClassNotFoundException e){
throw new RuntimeException(e);
}
}
// 获取 Connection 对象
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(
props.getProperty("url"),
props.getProperty("username"),
props.getProperty("password")
);
}
}
// 第二版: 使用 c3p0 连接池获取连接对象
public class JdbcUtils {
// 使用的是配置文件的默认配置, 要求在 src 目录下给出 c3p0-config.xml
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 使用连接池获取连接对象
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
// 返回连接池对象
public static DataSource getDataSource(){
return dataSource;
}
}
参考资料:
JdbcUtils 小工具的更多相关文章
- 自己写的JdbcUtils小工具-----得到Connection对象
Properties文件中存放键值对------(可看对Properties文件的解析) static代码块是在构造函数之前执行的,而且只执行一次,即类首次加载时. 也就是只加载一次配置文件和加载数据 ...
- 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...
- 【原】得心应手小工具开发——IE代理快速切换工具
一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...
- ContentProvider域名替换小工具
开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...
- c 小工具的使用
1. 这是一个gps 数据过滤的小工具,目的是过滤到gps数据中不符合要求的数据,然后转为json 数据 需要两个小工具 bermuda.c ------> 过滤一定范围的数据 geo2j ...
- 偷懒小工具 - SSO单点登录通用类(可跨域)
写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...
- [原创] Delphi小工具(Windows资源管理器右键菜单扩展)
两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...
- 介绍两个Ubuntu上的桌面小工具
经常使用Windows10,Sticky Notes和壁纸自动切换功能挺好用的.我经常会使用Sticky Notes来记录一些信息,内容是实时保存的,而且启动的时候会自动显示在桌面上.其实Ubuntu ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
随机推荐
- openstack架构简单介绍J版(更新中)
title : OPENSTACK架构简单介绍 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算软件,以A ...
- HTML5开发移动web应用——Sencha Touch篇(10)
我们把数据可视化出来,为的就是进行一些针对数据的操作. 这里介绍一下DataView的排序功能和搜索功能. 掌握这两个技能,能够让写出的数据界面内的数据能够依据要求进行排序,能够进行数据的搜索显示灯功 ...
- spring配置,spring中的bean 的id不能相同
lib下加入包 spring.jar commons-logging.jar src下添加 applicationContext.xml <?xml version="1.0" ...
- Filter介绍,运行顺序,实例
Filter介绍 Filter可觉得是Servlet的一种"变种",它主要用于对用户请求进行预处理,也能够对HttpServletResponse进行后处理,是个典型的处理链. 它 ...
- java基础入门-多线程同步浅析-以银行转账为样例
在说之前先普及一下线程是什么? 线程:说白了就是一个任务片段 进程:是一个具有独立功能的程序关于某个数据集合的一次执行活动.一个进程有一个或者多个线程 线程与进程的本质差别就是有么有数据共享空间.线程 ...
- JQuery常用操作实现方式
http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...
- C# Activator.CreateInstance 动态创建类的实例(二)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- python自动生成文件头
"auto add pyhton header --start autocmd BufNewFile *.py 0r ~/.vim/vim_template/vim_python_heade ...
- nodejs学习之简单服务器的编写
不废话了!直接上代码: var http = require('http'); //导入模块http http.createServer(function(request,response){ res ...
- java-FileDemo
关于file类的使用:文件的增删查 package com.example; import java.io.File; import java.io.IOException; public class ...