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. u盘安装centos

    1. 下载centos系统2. 使用UltraISO制作u盘启动.制作方法:http://jingyan.baidu.com/article/a378c960630e61b329283045.html ...

  2. Elasticsearch--数据索引

    前言 Elasticsearch可以支持全文检索,那么ES是以什么机制来支持的,这里索引就是一个重要的步骤,经过索引之后的文档才可以被分析存储.建立倒排索引.本篇就是以ES的数据检索操作来讨论的. 更 ...

  3. redis 笔记06 发布与订阅、事务、慢查询日志、监视器

    发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系:SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面,而UNSUBSCRIBE命令则负责 解除客 ...

  4. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  5. Zabbix中使用ICMP ping来判断主机是否存活的问题

    上一节配置了Simple check,现在来通过Simple check 用ICMP ping来监控充节点运行情况.Zabbix使用fping处理ICMP ping的请求,需要安装fping程序,安装 ...

  6. oracle 11g升级

    手先需要下载oracle11g的补丁安装包,一般只有付费用户才能获取到该安装包,其他用户获取不到,那怎么办呢? 万能的互联网可以办到,可以用http://www.wangpansou.cn/所有其他用 ...

  7. 图解 交集(join)和 合并(union)

    假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示: id name       id  name 1  Pirate   ...

  8. Linux下后台程序完成自动输入密码等交互行为的例子

    今天要开发一个定时任务,然后加入cron列表中.但是有个问题摆在眼前,脚本的执行中需要输入数据库密码: mysql -u root -p << SQL use db; set names  ...

  9. drupal 自定义表单调用autocomplete主标签实现方法

    代码如下: <php function module_name_form() { $form = array(); $form['city'] = array( '#title' => t ...

  10. Linux下命令行安装WebLogic 10.3.6

    1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中.并会在/home路径下创建一个和用户名相同的路径,比如我们创建的webl ...