简单封装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语句不兼容原因
一般是sql_mode不相同,可以认为规则不一致.(语法的变化非常小,一般可以忽略) 如果想要导入不同版本的数据.可以: 手动处理一些导入错误或者采用其他的办法. 或者 修改sql_mode.具体修改 ...
- fault coverage enhancement
在pseudo-random test中,由于random pattern resistant的特性,fault coverage不是sufficient的, 所以会有一些办法来进行coverage的 ...
- 关于linux的systemd的一些事
1. 输出运行失败的单元: systemctl --failed 2. 所有的单元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 这两个目录 ...
- linux系统的时间调整
以centos为例,其它系统应该是一样或者类似的. 需要用到两个命令: date 和 hwclock 其中 date 命令由 coreutils 这个包提供, hwclock 命令由 util-lin ...
- 关于在windows下使用mingw并行编译wxwidgets时的错误
清理用的命令:mingw32-make -j4 -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 clean 2>nul ...
- 《OpenGL着色语言》理解点记录二
别人提到“OpenGL的处理管线”时,意味着什么? 准确的讲,应该是“OpenGL图形处理管线”,“管线”带有特定的顺序,在OpenGL中就是Graphics Processing Pipeline. ...
- 《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记
第二十三章:使用数据库 MySQL数据库 MySQL客户端界面 mysql命令行参数 参数 描述 -A 禁用自动重新生成哈希表 -b 禁用 出错后的beep声 -B 不使用历史文件 -C 压缩客户端和 ...
- mysql字符串相关
使用MySQL,我们很多时候都会出现需要截取字符串的情况,所以关于字符串的截取的方式有必要记录下去. MySQL截取字符串的函数有: left(str, length):从左边开始截取,length是 ...
- 160905、c3p0详细配置
官方文档 : http://www.mchange.com/projects/c3p0/index.html <c3p0-config> <default-config> &l ...
- [转]Win7下安装配置sharepoint server 2010
转自:http://blog.sina.com.cn/s/blog_5d93d7aa010151lp.html 要开发SharePoint 2010应用程序,开发人员必须构建一个SharePoint ...