// 第一版
// 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 小工具的更多相关文章

  1. 自己写的JdbcUtils小工具-----得到Connection对象

    Properties文件中存放键值对------(可看对Properties文件的解析) static代码块是在构造函数之前执行的,而且只执行一次,即类首次加载时. 也就是只加载一次配置文件和加载数据 ...

  2. 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  3. 【原】得心应手小工具开发——IE代理快速切换工具

    一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...

  4. ContentProvider域名替换小工具

    开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...

  5. c 小工具的使用

    1. 这是一个gps 数据过滤的小工具,目的是过滤到gps数据中不符合要求的数据,然后转为json 数据 需要两个小工具 bermuda.c   ------>  过滤一定范围的数据 geo2j ...

  6. 偷懒小工具 - SSO单点登录通用类(可跨域)

    写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...

  7. [原创] Delphi小工具(Windows资源管理器右键菜单扩展)

    两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...

  8. 介绍两个Ubuntu上的桌面小工具

    经常使用Windows10,Sticky Notes和壁纸自动切换功能挺好用的.我经常会使用Sticky Notes来记录一些信息,内容是实时保存的,而且启动的时候会自动显示在桌面上.其实Ubuntu ...

  9. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

随机推荐

  1. loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式

    loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式 分类: 心得 loadrunner 我的测试 2012-04-01 12:52 2340人阅读 评论(0) 收藏 举报 脚本l ...

  2. UVA 6475 Effective Infection Time

    You are estimating the threat level of quarantined zones that have been abandoned to the infection. ...

  3. 阿里云创建RAM子账号

    操作步骤 创建子账号 主账号导航至 访问控制 > 用户管理 页面.如下图所示: 单击右上角的 新建用户,如下图所示: 填写弹出框的各配置项,如下图所示: 单击 确定,即可创建子账号. 允许子账号 ...

  4. RPC框架-yar学习

    RPC采用客户机/服务器模式. 请求程序就是一个客户机,而服务提供程序就是一个服务器.首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息.在服务器端, 进程保持睡眠状态直到调 ...

  5. [Oracle] - Install Oracle12cR1 on Oracle Linux 6.5 in VirtualBox

    My Oralce Linux 6.5 is running on VirtualBox. Basic settings is 4G memory, 50G hard-disk, auto parti ...

  6. WCF信道工厂Channel Factory

    ChannelFactory<TChannel> 类 一个创建不同类型通道的工厂,客户端使用这些通道将消息发送到不同配置的服务终结点. 命名空间: System.ServiceModel ...

  7. Swift 烧脑体操一

    Swift 烧脑体操(一) - Optional 的嵌套   前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融 ...

  8. unity mac 破解教程

    1.安装好软件,我们解压破解包,有下面两个文件,Unity 和Unity_v5.x.ulf,放桌面.     2.打开终端.       3.输入文件地址,注意,我这上边的用户名,记得改成自己的用户名 ...

  9. [转]成员函数指针与高性能的C++委托

    原文(作者:Don Clugston):Member Function Pointers and the Fastest Possible C++ Delegates 译文(作者:周翔): 成员函数指 ...

  10. 【转】SQL SERVER 2005 数据库状态为“可疑”的解决方法

    --MyDB为修复的数据名 USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO ALTER DATABA ...