DBUtils工具类,听说你没用过?( 二 )
public static Connection getConnection() throws Exception {/*** 获取数据库的连接*///1.读取配置文件的4个基本信息InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");Properties pros = new Properties();pros.load(is);String user = pros.getProperty("user");String password = pros.getProperty("password");String url = pros.getProperty("url");String driverClass = pros.getProperty("driverClass");//2.加载驱动Class.forName(driverClass);//3.获取连接Connection con = DriverManager.getConnection(url,user,password);System.out.println(con);return con; }
说明:
- 首先通过InputStream读取配置文件的4个基本信息 , 利用ClassLoader调用getSystemClassLoader()方法实际上相当ConnectionTest.class.getClassLoader()的作用 , 但使用前者的好处是避免了出现第三方API;
- 定义4个String类型的字符串接收获取到的基本信息;
- 此处省略了注册驱动操作 , 是因为在mysql的Driver实现类中 , 声明如下操作 , 故在实际的代码编写中不需要在重新进行注册驱动 。
static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}
非查询类释放资源方法:/*** 关闭连接和Statement* @param con* @param ps*/ public static void closeResource(Connection con,Statement ps) {//资源关闭try {if(ps != null)ps.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if(con != null)con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} }
说明: 非查询类释放资源过程中只需要关闭连接Connection和Statement , 通过判断Statement的对象ps和Connection的对象con是否非空即可执行资源关闭 。 查询类释放资源方法:/*** 关闭连接、Statement和ResultSet* @param con* @param ps*/ public static void closeResource(Connection con,Statement ps,ResultSet rs) {//资源关闭try {if(ps != null)ps.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if(con != null)con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if(rs != null)rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} }
说明: 查询类释放资源过程中不仅仅要关闭连接Connection和Statement , 还需要关闭查询过程中得到的结果集ResultSet 。4.实现对数据表的增删改查(1)向student表中插入一条数据说明: 预期目的是为了将(“郑**” , “304728796@qq.com” , “2000-01-01”)数据插入到数据库中 , 运行后结果如图所示 。
@Test //向student表中插入一条数据 public void testInsert(){Connection con = null;PreparedStatement ps = null;try {//1.读取配置文件的4个基本信息InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");Properties pros = new Properties();pros.load(is);String user = pros.getProperty("user");String password = pros.getProperty("password");String url = pros.getProperty("url");String driverClass = pros.getProperty("driverClass");//2.加载驱动Class.forName(driverClass);//3.获取连接con = DriverManager.getConnection(url,user,password);System.out.println(con);//4.预编译SQL语句 , 返回PreparedStatement的实例String sql = "insert into student(name,email,birth)values(?,?,?)";//?:占位符ps = con.prepareStatement(sql);//5.填充占位符ps.setString(1, "郑**");ps.setString(2, "304728796@qq.com");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");java.util.Date date = sdf.parse("2000-01-01");ps.setDate(3,new Date(date.getTime()));//6.执行SQLps.execute();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {//7.资源关闭try {if(ps != null)ps.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if(con != null)con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }
- 开网店不懂运营?阿里上线“商品优化”工具帮158万商家提升成交量
- 小程序亮相,内测阶段日活破百万,含内容工具服务三大类
- Facebook更新Access Your Information工具:精细化隐私控制
- 初探 iOS 自动化工具——快捷指令
- 微软官方数据恢复工具即将更新:更易于上手 优化恢复性能
- 免费好用:这款Win10系统增强工具不要错过(二)
- Flipper Zero将于下月发货:为极客打造的开源多功能小工具
- 比亚迪关联公司公开这项专利 能够解决交通工具能量补充问题
- 微软推实用磁盘工具DiskSpace 帮用户分析文件占用空间
- 元旦休假突发紧急办公 这款小工具足不出户让「远程办公」So easy