JDBC工具类 访问数据库 增删改查CRUD的通用方法
- 1 package com.zmh.util;
- 2
- 3 import java.sql.*;
- 4 import java.util.ArrayList;
- 5 import java.util.HashMap;
- 6 import java.util.List;
- 7 import java.util.Map;
- 8 /**
- 9 * JDBC工具类
- 10 */
- 11 public class Util1 {
- 12 //加载驱动
- 13 static {
- 14 try {
- 15 Class.forName("com.mysql.jdbc.Driver");
- 16 } catch (ClassNotFoundException e) {
- 17 e.printStackTrace();
- 18 }
- 19 }
- 20 //获得连接
- 21 public static Connection getConnection(){
- 22 try {
- 23 DriverManager.getConnection("jdbc:mysql://localhost:3306/qy97?characterEnconding=utf-8","root","root");
- 24 } catch (SQLException e) {
- 25 e.printStackTrace();
- 26 }
- 27 return null;
- 28 }
- 29 /** 增删改的通用方法
- 30 * @param String sql 要执行的sql
- 31 * @param Object[] obj 对象类型的数组 里面存放着 sql执行的占位符参数
- 32 * 【name,age,id】
- 33 * 【id】
- 34 * 【name,age】
- 35 * Object... 可变参数
- 36 * */
- 37 public static boolean executeUpdate(String sql,Object... args){
- 38 Connection conn = null;
- 39 PreparedStatement ps = null;
- 40 try {
- 41 conn = getConnection();
- 42 ps = conn.prepareStatement(sql);
- 43 //有参数
- 44 for(int i=0;i<args.length;i++){
- 45 ps.setObject(i+1,args[i]);
- 46 }
- 47 //执行sql语句
- 48 int i = ps.executeUpdate();
- 49 //返回 true
- 50 return i>0;
- 51 } catch (SQLException e) {
- 52 e.printStackTrace();
- 53 }finally{
- 54 //关闭资源
- 55 close(conn,ps,null);
- 56 }
- 57 return false;
- 58 }
- 59 /**
- 60 * 查询的通用方法
- 61 * @param sql;
- 62 * @param args;
- 63 * @return
- 64 * */
- 65 public static List<Map<String,Object>> executeQuery(String sql,Object... args){
- 66 Connection conn = null;
- 67 PreparedStatement ps = null;
- 68 ResultSet rs = null;
- 69 try {
- 70 conn = getConnection();
- 71 ps = conn.prepareStatement(sql);
- 72 //有可能有参数
- 73 for(int i=0;i<args.length;i++){
- 74 ps.setObject(i+1,args[i]);
- 75 }
- 76 //执行sql语句
- 77 rs = ps.executeQuery();
- 78 //创建List集合
- 79 List<Map<String, Object>> list = new ArrayList<>();
- 80 //获取本次查询结果集有多少列
- 81 int count = rs.getMetaData().getColumnCount();
- 82 //while循环
- 83 while(rs.next()){
- 84 //创建Map集合 获取一个数据封装成一个Map集合
- 85 Map<String, Object> map = new HashMap<>();
- 86 //for循环 遍历所有的列
- 87 for(int i=0;i<count;i++){
- 88 //获取本次查询结果集的列名
- 89 String name = rs.getMetaData().getColumnLabel(i + 1);
- 90 map.put(name,rs.getObject(name));
- 91 }
- 92 //把所有的map集合添加到List集合中
- 93 list.add(map);
- 94 }
- 95 //返回值
- 96 return list;
- 97 } catch (SQLException e) {
- 98 e.printStackTrace();
- 99 }finally{
- 100 //关闭资源
- 101 close(conn,ps,rs);
- 102 }
- 103 return null;
- 104 }
- 105 /**
- 106 * 关闭资源的通用方法
- 107 * */
- 108 public static void close(Connection conn,Statement stat,ResultSet rs){
- 109 try{
- 110 if(rs!=null){
- 111 rs.close();
- 112 }
- 113 if(stat!=null){
- 114 stat.close();
- 115 }
- 116 if(conn!=null){
- 117 conn.close();
- 118 }
- 119 }catch(Exception e){
- 120 e.printStackTrace();
- 121 }
- 122 }
- 123 }
JDBC工具类 访问数据库 增删改查CRUD的通用方法的更多相关文章
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- mybatis--实现数据库增删改查
首先,创建一个数据库my,并在数据库中插入一张表user,然后在user表中插入一行数据,代码如下: create database my; use my; create table user( id ...
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)
接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1.首先项目图: 2.这里的布局文件activity_main.xml: <LinearLayout xmlns:android ...
随机推荐
- type和object
一.定义 1.object是所有新式类的父类 2.type是所有类的类 二.解析 下面通过代码来比较一下object和type的关系(__class__获取所属的类,__bases__获取父 ...
- 逃离迷宫 HDU - 1728(bfs)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 爬取豆瓣Top250_Ajax动态页面
爬取网址: 完整代码: import sys from urllib import request, parse import ssl ssl._create_default_https_contex ...
- CodeForces 379F 树的直径 New Year Tree
题意:每次操作新加两个叶子节点,每次操作完以后询问树的直径. 维护树的直径的两个端点U,V,每次计算一下新加进来的叶子节点到U,V两点的距离,如果有更长的就更新. 因为根据树的直径的求法,若出现新的直 ...
- Python虚拟机之异常控制流(五)
Python中的异常控制语义结构 在Python虚拟机之异常控制流(四)这一章中,我们考察了Python的异常在虚拟机中的级别上是什么东西,抛出异常这个动作在虚拟机的级别上对应的行为,最后,我们还剖析 ...
- Hive安装步骤
首先解压压缩包 然后进入bin 执行 ./hive 不过现在hive使用的是自己默认的数据库,不方便,可以通过配置使用MySQL数据库 创建hive-site.xml 粘贴一下内容 <confi ...
- 编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤
编绎整个OpenJDK要很久,而且有很多东西是不需要的.研究HotSpot的话,其实只要下HotSpot部分的代码就可以了. 下面简单记录下编绎调试HotSpot一些步骤. 一.编绎 进入hotsop ...
- java反射的基本使用
反射机制是java中非常重要的功能,熟练使用反射功能对实际的开发有很大的帮助. 一,通过反射获取对象实例 使用的对象User package whroid.java.reflect; public c ...
- 【bzoj2563】阿狸和桃子的游戏 贪心
题目描述 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的:1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子 ...
- 【bzoj4785】[Zjoi2017]树状数组 线段树套线段树
题目描述 漆黑的晚上,九条可怜躺在床上辗转反侧.难以入眠的她想起了若干年前她的一次悲惨的OI 比赛经历.那是一道基础的树状数组题.给出一个长度为 n 的数组 A,初始值都为 0,接下来进行 m 次操作 ...