简单封装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 ...
随机推荐
- MVC4中给TextBoxFor设置默认值和属性
例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...
- Linux下用SCP无需输入密码传输文件
在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认. 不过通过建立信任关系,可以实现不输入密码. 这里假设A的IP ...
- qlserver、Mysql、Oracle三种数据库的优缺点总结
这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下 一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...
- webssh software
shellinabox是由Markus Gutschke开发的一款自由开源的基于Web的Ajax的终端模拟器.它使用AJAX技术,通过Web浏览器提供了类似原生的 Shell 的外观和感受. yum ...
- Ubuntu 下配置ftp服务端
安装sudo apt-get install pure-ftpdsudo netstat –ano | grep “21”查看21端口是否已开启.完成安装后,就可以用Ubuntu系统的用户名和密码登陆 ...
- [转]ConsumeContainerWhitespace property to remove blank space in SSRS 2008 report
转自:http://beyondrelational.com/modules/2/blogs/115/posts/11153/consumecontainerwhitespace-property-t ...
- weblogic从应用服务器找不到主应用服务器
报错信息: weblogic.cluster.replication.ApplicationUnavailableException: WebApp with contextPath: not fou ...
- 1、java基础回顾与加强
一. 基础回顾 1 集合 1.1 集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, ...
- require()与 require_once()、 include与include_once()
- PHP正则表达式之定界符和原子介绍
1,正则表达式的定界符. 除了字母.数字和反斜线\以外的任何字符都可以为定界符号,比如 | |.//.{}.!!等等,但是需要注意,如果没有特殊需要,我们都使用正斜线//作为正则表达式的定界符号. 2 ...