简单封装JDBC
package com.sunshine.frimework.tool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* @author WangChao
* JDBC的编码步骤
* 1:加载数据库驱动
* 2:创建并获取数据库连接
* 2:创建jdbc statement对象
* 4:设置sql语句的参数(使用preparedStatement)
* 5:通过statement执行sql并获取结果
* 6:对sql执行结果进行解析处理
* 7:释放资源(resultSet,preparedstatement,connection)
*
*/
public class JdbcUtil {
//定义连接变量
private Connection conn = null;
//定义用于运行sql语句声明stmt变量
private Statement stmt = null;
//定义结果集变量
private ResultSet rs = null;
//获取连接
private void getConn(){
try {
//添加驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("添加驱动成功!!!");
try {
//获取链接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "15238566442");
stmt = conn.createStatement();
} catch (SQLException e) {
//输出异常信息
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
//输出异常信息
e.printStackTrace();
}
}
//关闭
private void close(){
try {
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
//输出异常信息
e.printStackTrace();
}
}
//更新
public boolean update(String sql){
getConn();
try {
stmt.executeUpdate(sql);
return true;
} catch (Exception e) {
//输出异常信息
e.printStackTrace();
return false;
}finally{
close();
}
}
//获取数据数目
public int dataCount(String sql){
getConn();
try {
rs = stmt.executeQuery(sql);
rs.next();
return rs.getInt(1);
} catch (Exception e) {
//输出异常信息
e.printStackTrace();
return 0;
}finally{
close();
}
}
//查询
public List<Map<String,Object>> query(String sql){
System.out.println("执行的SQL语句是:"+sql);
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
getConn();
try {
rs = stmt.executeQuery(sql);
//结构化数据对象
ResultSetMetaData rsmt = rs.getMetaData();
//列数
int count = rsmt.getColumnCount();
//存储所有列的名字
String []nameArr = new String[count];
for(int i = 0;i<nameArr.length;i++){
//getColumnName()方法内的变量值是从1开始的
nameArr[i] = rsmt.getColumnName(i+1);
}
//判断是否是有下一个
while(rs.next()){
//声明并实例化map
Map<String,Object> map = new HashMap<String,Object>();
for(int i = 0;i<nameArr.length;i++){
//把数据列名和数据都放进到map里
map.put(nameArr[i], rs.getString(nameArr[i]));
}
list.add(map);
}
} catch (Exception e) {
//输出异常信息
e.printStackTrace();
}
return list;
}
}
简单封装JDBC的更多相关文章
- 简单通用JDBC辅助类封装
哎,最近很好久没在博客园写点东西了,由于工作的原因,接触公司自己研发的底层orm框架,偶然发现该框架在调用jdbc操作的时候参考的是hibernate 里面的SimpleJdbcTemplate,这里 ...
- Spring jdbc 对象Mapper的简单封装
一般查询实体的时候,都需要这么使用/** * 根据id查询 * * @return */ public Emp queryEmpById(Intege ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- JDBC【2】-- JDBC工作原理以及简单封装
目录 1. 工作原理 1.1 加载驱动 1.1.1 类加载相关知识 1.1.2 为什么JDK 1.6之后不需要显示加载了? 1.2 驱动加载完成了,然后呢? 2. 简单封装 1. 工作原理 一般我们主 ...
- 一颗简单的JDBC栗子
前言:安装好数据库之后,我们编写的java程序是不能直接使用数据库的,而JDBC(Java Database Connectivity,即java数据库连接)是java语言里用来规范客户端程序访问数据 ...
- DBUtils-对JDBC简单封装的开源工具类库
DBUtils 是对JDBC简单封装的开源工具类 详细介绍地址: https://baike.baidu.com/item/Dbutils/10655914?fr=aladdin 在使用DBUtil ...
- 简单的JDBC编程步骤
1.加载数据库驱动(com.mysql.jdbc.Driver) 2.创建并获取数据库链接(Connection) 3.创建jdbc statement对象(PreparedStatement) 4. ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
随机推荐
- mysql 导出过长的数字列时变科学计数法问题解决办法
--mysql 导出数据时, 数字类型的列如果位数过长,变为科学技术发问题 concat('\t',a.IDCARD_NO) 例子: select concat('\t',a.IDCA ...
- 深度学习 vs 机器学习 vs 模式识别
http://www.csdn.net/article/2015-03-24/2824301 [编者按]本文来自CMU的博士,MIT的博士后,vision.ai的联合创始人Tomasz Malisie ...
- 160920、springmvc上传图片不生成临时文件
springMVC上传图片时候小于10k不会再临时目录里面生成临时文件,需要增加一个配置 <property name="maxInMemorySize" value=&qu ...
- TI CC2541的狗日的Key
被突如其来的一个bug困扰了好几天, 起因是, 按键接的红外接收器, 结果发现, 一旦按下之后, IEN1, P0IE的标识位bit5, 被不知道特么的谁归0了, 也就是说, 按键只能被按下一次, 再 ...
- linux下共享内存mmap和DMA(直接访问内存)的使用 【转】
转自:http://blog.chinaunix.net/uid-7374279-id-4413316.html 介绍Linux内存管理和内存映射的奥秘.同时讲述设备驱动程序是如何使用“直接内存访问” ...
- ubuntu下搭建JAVA开发环境【转】
转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...
- win8以上系统,设置英文为默认输入法
说明:这里将添加“简体中文(美式键盘)”,也就是英文输入法,并设置为默认输入法. 1.打开控制面板—时钟.语言和区域—语言,点击“添加语言”,选择“英语”—打开,选择“英语(美国)” —添加. 2.选 ...
- 一道面试题比较synchronized和读写锁
一.科普定义 这篇博文的两个主角“synchronized”和“读写锁” 1)synchronized 这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用, ...
- 在ECSHOP后台的订单列表中显示配送方式
熟悉ECSHOP后台的人都知道,只有点击某个具体的订单,进入订单详细页面才能看到该订单的配送方式,最模板修改的目的,是想让管理者在订单列表页面 就能看到该订单的配送方式. 下面是修改方法:首先来修改 ...
- 20145227 《Java程序设计》实验四实验报告
20145227 <Java程序设计>实验四实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello World的小程序 实验步骤 ...