手把手封装数据层之DButil数据库连接的封装
最近这段时间一直在用SSM框架做增删改查,突然想把以前还不会用框架的时候,综合百度和各种资料结合API文档抄袭而来的数据层的封装分享给大家。这边先封装一个DButil。
我这个封装就是烂大街的那种,没什么特别。
- //DButil.java
package com.yck.database;- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.*;
- import java.util.Properties;
- public class DButil
- {
- private static String username;
- private static String password;
- private static String url;
- private static String driver;
- static
- {
- getDatabaseInfo("jdbc.properties");
- try
- {
- Class.forName(driver);
- } catch (ClassNotFoundException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public static void getDatabaseInfo(String path)
- {
- InputStream in = DButil.class.getClassLoader().getResourceAsStream(path);
- Properties p = new Properties();
- try
- {
- p.load(in);
- username = p.getProperty("jdbc.username");
- password = p.getProperty("jdbc.password");
- url = p.getProperty("jdbc.url");
- driver = p.getProperty("jdbc.driver");
- } catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- public static Connection getConnection()
- {
- Connection conn = null;
- try
- {
- conn = DriverManager.getConnection(url,username,password);
- }catch (SQLException e)
- {
- e.printStackTrace();
- }
- return conn;
- }
- public static void closeConnection(Connection connection)
- {
- try
- {
- if(connection != null)
- {
- connection.close();
- connection = null;
- }
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public static PreparedStatement prepareStatement(Connection connection,String sql)
- {
- PreparedStatement preparedStatement = null;
- try
- {
- preparedStatement = connection.prepareStatement(sql);
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- return preparedStatement;
- }
- public static void closePreparedStatement(PreparedStatement preparedStatement)
- {
- try
- {
- if(preparedStatement != null)
- {
- preparedStatement.close();
- preparedStatement = null;
- }
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public static Statement createStatement(Connection connection)
- {
- Statement statement = null;
- try
- {
- statement = connection.createStatement();
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- return statement;
- }
- public static void closeStatement(Statement statement)
- {
- try
- {
- if(statement != null)
- {
- statement.close();
- statement = null;
- }
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public static ResultSet getResultSet(Statement statement,String sql)
- {
- ResultSet resultSet = null;
- try
- {
- resultSet = statement.executeQuery(sql);
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- return resultSet;
- }
- public static void closeResultSet(ResultSet resultSet)
- {
- try
- {
- if(resultSet != null)
- {
- resultSet.close();
- resultSet = null;
- }
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- }
这里是数据库连接需要的jdbc.properties,我们是通过DButil类的读取properties文件的办法来将DButil实例化的。
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=true
- jdbc.username=root
- jdbc.password=8888888
数据库写了个很简单的来测试
- CREATE DATABASE test;
- USE test;
- CREATE TABLE t_user
- (
- id INT AUTO_INCREMENT NOT NULL,
- name ),
- age INT,
- PRIMARY KEY(id)
- )ENGINE=InnoDB DEFAULT CHARSET=utf8
手动插了两条数据,数据库的内容如下
下面我们来测试一下,新建一个Test类
- package com.yck.database;
- import java.sql.*;
- public class Test
- {
- public static void main(String[] args)
- {
- Connection conn = DButil.getConnection();
- Statement stam =DButil.createStatement(conn);
- String sql = "select * from t_user";
- ResultSet rs = null;
- try
- {
- rs = stam.executeQuery(sql);
- while(rs.next())
- {
- System.out.println(rs.getString("name"));
- }
- } catch (SQLException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- DButil.closeResultSet(rs);
- DButil.closeStatement(stam);
- DButil.closeResultSet(rs);
- }
- }
运行结果如下,说明我们封装的数据库是能够连接上的
手把手封装数据层之DButil数据库连接的封装的更多相关文章
- 手把手封装数据层之DataUtil数据库操作的封装
上一篇我们写完了数据库连接的封装 没有看的请移步上一篇关于数据库连接的内容 这次我们讲数据库操作的封装.数据库的操作就是增删改查:心再大一点就可以直接分为查询和其他. 因为查询是有返回对象的,而其他都 ...
- 瞎j8封装第二版之数据层的封装
看了以前写的代码,对就是下面这个 手把手封装数据层之DataUtil数据库操作的封装 觉得以前写的代码好烂啊!!!,重新理了一下思路,写得更规范和简练,应该效率也会高很多,用了一下下午写的连接池(半废 ...
- 【类库】私房干货.Net数据层方法的封装
[类库]私房干货.Net数据层方法的封装 作者:白宁超 时间:2016年3月5日22:51:47 摘要:继上篇<Oracle手边常用70则脚本知识汇总>文章的发表,引起很多朋友关注.便促使 ...
- angular开发中对请求数据层的封装
代码地址如下:http://www.demodashi.com/demo/11481.html 一.本章节仅仅是对angular4项目开发中数据请求封装到model中 仅仅是在项目angular4项目 ...
- 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...
- Spring Boot 系列(九)数据层-集成Spring-data-jpa
实际开发中,不可避免地会对数据进行反复的增删改查操作,然而这部分工作是十分繁琐枯燥的.那么,随即而生的ORM框架就能很好的解决这个问题. 我们常用的ORM框架有:Hibernate.Mybatis.J ...
- 数据层的多租户浅谈(SAAS多租户数据库设计)
在上一篇“浅析多租户在 Java 平台和某些 PaaS 上的实现”中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户 ...
- JAVA 利用反射自定义数据层框架
之前的随笔一直都在介绍c#,主要公司最近的业务都是做桌面程序,那么目前c#中的WPF肯定是我做桌面程序的不二之选,做了半年的WPF,也基本摸清了c#写代码的套路和规则(本人之前是两年多的JAVA开发者 ...
随机推荐
- Spring Boot 使用Redis缓存
本文示例源码,请看这里 Spring Cache的官方文档,请看这里 缓存存储 Spring 提供了很多缓存管理器,例如: SimpleCacheManager EhCacheCacheManager ...
- (转)Java compiler level does not match解决方法
背景:工作中导入以前的项目,导出报Java compiler level does not match the versionof the installed Java project facet. ...
- 如何快速查看github代码库中第一次commit的记录
发现一个别人推荐的代码库用来学习源码, star星还不少,别人推荐从第一次commit开始阅读,于是试着去找commits的第一次 问题来了,这个代码库commits7855次,点击进入commits ...
- 用u盘启动计算机
上次只是做好了u盘启动盘,但是并没有说怎么安装系统.接下来说一下怎么装系统.链接:怎么把系统装进u盘(ultraiso) 电脑经常要用到u盘启动.设置u盘启动在bios设置里面进行设置.下面就来讲解一 ...
- amd和cmd区别
作者:玉伯 链接:https://www.zhihu.com/question/20351507/answer/14859415 来源:知乎 著作权归作者所有,转载请联系作者获得授权. AMD 是 R ...
- AdPlayBanner:功能丰富、一键式使用的图片轮播插件
AdPlayBanner:功能丰富.一键式使用的图片轮播插件 AdPlayBanner是一个Android平台基于ViewPager实现的轮播图插件,主要用以自动或者手动地播放轮播图,提供了Fresc ...
- git版本控制 for window安装和命令行使用
Git 安装配置 Windows 平台上安装 在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行 ...
- hdu--5351--MZL's Border
表示看这篇博客后找到了思路: http://blog.csdn.net/queuelovestack/article/details/47291195 补充一下数据,方便观察规律 m LBorder ...
- Boyer-Moore Majority Vote Algorithm
介绍算法之前, 我们来看一个场景, 假设您有一个未排序的列表.您想知道列表中是否存在一个数量占列表的总数一半以上的元素, 我们称这样一个列表元素为 Majority 元素.如果有这样一个元素, 求出它 ...
- js判断移动终端(手机浏览器)
方法1: <script type="text/javascript"> var browser = { versions: f ...