简单封装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 ...
随机推荐
- oracle的函数
1:nvl函数 nvl函数将一个null值转换为一个实际的值,数据类型可以是日期,数字,字符,数据类型必须匹配,vl能够转换任何数据类型,但是转换的数据类型返回值必须是nvl(expr1,expr2) ...
- 夺命雷公狗ThinkPHP项目之----企业网站25之网站前台面包屑导航URL的完善
如果想取出面包屑导航的url那么就必须在model层里面进行多取一个了: <?php namespace Home\Model; use Think\Model; class CategoryM ...
- 一个noconsole程序
貌似是一个外国人写的,作用应该是让控制台的程序运行的时候不会弹出那个控制台黑框.想用来让它不显示 php-cgi.exe 运行后的窗口,可是效果不是预期的. 项目在 github 的位置:https: ...
- Linux(CentOS) 如何查看当前占用CPU或内存最多的K个进程
一.可以使用以下命令查使用内存最多的K个进程 方法1: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最高的三个,K=3 说明:ps -aux中(a指 ...
- 《zw版·Halcon-delphi系列原创教程》 3d汽车模型自动区域分割
<zw版·Halcon-delphi系列原创教程> 3d汽车模型自动区域分割 目前,图像分析,在3D设计,机器视觉方面拥有很广.这个Halcon脚本是3d汽车模型自动区域分割,很简单才20 ...
- OpenStack 界面开发中response.body的中文编码问题
Contents [hide] 1 问题的引入= 1.1 解决办法 2 用户限制输入中文 3 不限制用户输入,呈现上修改 问题的引入= G在我们创建虚拟机的时候,会设置虚拟机的名称,描述,如果没有限制 ...
- 在Ubuntu Kylin下安装QQ教程
下载: 下载地址:http://www.ubuntukylin.com/application/show.php?lang=cn&id=279 下载后解压得到wine-qqintl文件夹,里面 ...
- init_MUTEX 与 sema_init 函数【转】
转自:http://blog.chinaunix.net/uid-7332782-id-3211627.html 在编译Linux设备驱动程序学习(1)-字符设备驱动程序中scull.c程序时,报错: ...
- Centos6.5和Centos7 php环境搭建如何实现呢
首先我们先查看下centos的版本信息 代码如下: #适用于所有的linux lsb_release -a#或者cat /etc/redhat-release#又或者rpm -q centos-rel ...
- Quartz2D简介及基本线条绘制
* Quartz2D简介 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Mac系统 2.Quartz2D能完成的工作 画基本线条,绘制文字,图片,截图,自定义UIView. 3 ...