简单封装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 ...
随机推荐
- 有趣的linux命令
安装工具 debian => apt-get (In Debian like OS) red hat=> yum -y (In Red Hat like OS) mac => bre ...
- clock sense和analysis mode
PrimeTime会自动track clock tree中的inverter和buffer,从而得到每个register的clock sense. 如果clock tree中,只有buffer和inv ...
- [经典php视频]构建正则表达式解析网页中的图像标记<img>
这是高洛峰php视频中的一段,视频中一边分析需要的功能,一边构建greg_match函数的参数,边讲解边实战,是非常好的一种构建功能的演示. 你不可能把浩瀚的IT资料都记在脑袋里,也不可能随时随地透过 ...
- 二招解决php乱码问题
PHP的乱码问题已经说了N+1遍了,但还是经常看到新手不知道该如何解决php乱码问题,在此本人再重新给总结一下,希望对新手有点帮助 php网页出现乱码一般是在建立数据库时用的编码和php网页的编码不同 ...
- 背包问题(Knapsack problem)采用动态规划求解
问题说明: 假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号.单价与重量如下所示:0李子4KGNT$45001苹果5KGNT$57002橘子2 ...
- SQL删除重复数据方法
例如: id name value 1 a pp 2 a ...
- sql server 2008 安装过程与创建建sql server登录用户
1.sql server 下载安装包路径:http://pan.baidu.com/s/1qWuzddq 2.安装过程图解教程 ,参照网址:http://jingyan.baidu.com/album ...
- TI BLE CC2541的SPI主模式
SPI就是用4条线来串行传输数据, 2541只能用模拟的方式用GPIO来做. //*********************************************************** ...
- JS和CSS的多浏览器兼容(1)
1.指定文件在IE浏览器中的兼容性模式 要为你的网页指定文件模式,需要在你的网页中使用meta元素放入X-UA-Compatible http-equiv 标头.以下是指定为Emulate IE7 m ...
- maven打包异常
maven打包异常,如图: 问题原因:服务器密码错了.