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的更多相关文章

  1. 简单通用JDBC辅助类封装

    哎,最近很好久没在博客园写点东西了,由于工作的原因,接触公司自己研发的底层orm框架,偶然发现该框架在调用jdbc操作的时候参考的是hibernate 里面的SimpleJdbcTemplate,这里 ...

  2. Spring jdbc 对象Mapper的简单封装

    一般查询实体的时候,都需要这么使用/**      * 根据id查询      *       * @return      */     public Emp queryEmpById(Intege ...

  3. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  4. JDBC【2】-- JDBC工作原理以及简单封装

    目录 1. 工作原理 1.1 加载驱动 1.1.1 类加载相关知识 1.1.2 为什么JDK 1.6之后不需要显示加载了? 1.2 驱动加载完成了,然后呢? 2. 简单封装 1. 工作原理 一般我们主 ...

  5. 一颗简单的JDBC栗子

    前言:安装好数据库之后,我们编写的java程序是不能直接使用数据库的,而JDBC(Java Database Connectivity,即java数据库连接)是java语言里用来规范客户端程序访问数据 ...

  6. DBUtils-对JDBC简单封装的开源工具类库

    DBUtils 是对JDBC简单封装的开源工具类 详细介绍地址:  https://baike.baidu.com/item/Dbutils/10655914?fr=aladdin 在使用DBUtil ...

  7. 简单的JDBC编程步骤

    1.加载数据库驱动(com.mysql.jdbc.Driver) 2.创建并获取数据库链接(Connection) 3.创建jdbc statement对象(PreparedStatement) 4. ...

  8. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  9. FMDB简单封装和使用

    工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...

随机推荐

  1. mysql 导出过长的数字列时变科学计数法问题解决办法

    --mysql 导出数据时,  数字类型的列如果位数过长,变为科学技术发问题  concat('\t',a.IDCARD_NO)     例子: select   concat('\t',a.IDCA ...

  2. 深度学习 vs 机器学习 vs 模式识别

    http://www.csdn.net/article/2015-03-24/2824301 [编者按]本文来自CMU的博士,MIT的博士后,vision.ai的联合创始人Tomasz Malisie ...

  3. 160920、springmvc上传图片不生成临时文件

    springMVC上传图片时候小于10k不会再临时目录里面生成临时文件,需要增加一个配置 <property name="maxInMemorySize" value=&qu ...

  4. TI CC2541的狗日的Key

    被突如其来的一个bug困扰了好几天, 起因是, 按键接的红外接收器, 结果发现, 一旦按下之后, IEN1, P0IE的标识位bit5, 被不知道特么的谁归0了, 也就是说, 按键只能被按下一次, 再 ...

  5. linux下共享内存mmap和DMA(直接访问内存)的使用 【转】

    转自:http://blog.chinaunix.net/uid-7374279-id-4413316.html 介绍Linux内存管理和内存映射的奥秘.同时讲述设备驱动程序是如何使用“直接内存访问” ...

  6. ubuntu下搭建JAVA开发环境【转】

    转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...

  7. win8以上系统,设置英文为默认输入法

    说明:这里将添加“简体中文(美式键盘)”,也就是英文输入法,并设置为默认输入法. 1.打开控制面板—时钟.语言和区域—语言,点击“添加语言”,选择“英语”—打开,选择“英语(美国)” —添加. 2.选 ...

  8. 一道面试题比较synchronized和读写锁

    一.科普定义 这篇博文的两个主角“synchronized”和“读写锁” 1)synchronized 这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用, ...

  9. 在ECSHOP后台的订单列表中显示配送方式

    熟悉ECSHOP后台的人都知道,只有点击某个具体的订单,进入订单详细页面才能看到该订单的配送方式,最模板修改的目的,是想让管理者在订单列表页面 就能看到该订单的配送方式. 下面是修改方法:首先来修改 ...

  10. 20145227 《Java程序设计》实验四实验报告

    20145227 <Java程序设计>实验四实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello World的小程序 实验步骤 ...