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 ...
随机推荐
- Flask初学者:Jinja2模板
Python的Jinja2模板,其实就是在HTML文档中使用控制语句和表达语句替换HTML文档中的变量来控制HTML的显示格式,Python的Jinja2模板可以更加灵活和方便的控制HTML的显示,而 ...
- BZOJ 4985: 评分
二分答案 >=key的记为1 f[i]表示令i位置为1所需要的最少的1的个数 队列模拟 #include<cstdio> #include<algorithm> usin ...
- Python之code对象与pyc文件(一)
Python程序的执行过程 我们都知道,C语言在执行之前需要将源代码编译成可执行的二进制文件,也就是将源代码翻译成机器代码,这种二进制文件一旦生成,即可用于执行.但是,Python是否一样呢?或许很多 ...
- [windows篇][关掉某些服务]
- uiautomator 一个简单脚本创建流程
http://www.codeceo.com/article/android-ui-auto-test.html
- Pycharm脚本通用部分设置
Python脚本经常要设置同样的注释内容,Pycharm里面提供的模板可以很好的实现这个需求. 查找: File->settings->Editor->File and Code T ...
- ssh 远程执行绝对路径命令mysqld_multi 报my_print_defaults不存在
通过SSH直接执行远程命令(这种方式会使用Bash的non-interactive + non-login shell模式)找不到命令参考:http://ghoulich.xninja.org/201 ...
- koa2源码解读
最近在复习node的基础知识,于是看了看koa2的源码,写此文分享一下包括了Koa2的使用.中间件及上下文对象的大致实现原理. koa的github地址:https://github.com/koaj ...
- map/set/object/array对比
map () { //数据结构横向对比, 增,查,改,删 let map = new Map() let array = [] //增 map.set('t',1) array.push({t:1}) ...
- Linux Shell系列教程之(五)Shell字符串
本文是Linux Shell系列教程的第(五)篇,更多shell教程请看:Linux Shell系列教程 字符串是Shell编程中最常用最有用的数据类型,今天,Linux大学网就为大家介绍一下在She ...