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 ...
随机推荐
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python爬虫二
常见的反爬手段和解决思路 1)明确反反爬的主要思路 反反爬的主要思路就是尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现;浏览器先请求了地址url1,保留了cookie在本地,之后请求地址u ...
- exp分析
1 from pwn import* 2 3 local =1 4 debug = 1 5 6 if local: 7 p = process('./pwn1') 8 else: 9 p = remo ...
- Pond Cascade Gym - 101670B 贪心+数学
题目:题目链接 思路:题目让求最下面池子满的时间和所有池子满的时间,首先我们考虑所有池子满的时间,我们从上到下考虑,因为某些池子满了之后溢出只能往下溢水,考虑当前池子如果注满时间最长,那么从第一个池子 ...
- [python] 求大神解释下 面向对象中方法和属性
面向对象中 类方法 实例方法 类属性 实例属性该如何理解呢?
- Apache下error.log文件太大的处理方法
清除error.log.access.log并限制Apache日志文件大小的方法,在网上搜了下相应的资料,并按照如下步骤做了一遍,网站恢复正常 清除error.log.access.log并限制A ...
- 使用PYTHON创建XML文档_python
当用GOOGLE查的时候,内容几乎都是一样的.但是你想要的东西,一个也没有.例如,我就找不到中国人写的如何使用PYTHON来创建一个XML文件.当然,直接用文件写的方式也能够达到同样的效果,但是毕竟容 ...
- 递归函数的写法(以strcpy函数为例)
1. 递归函数模板 递归的前提是,找到一个公共子问题(或公共操作),然后将该函数构造为递归函数. retType function( ... ) { 结束条件 { [处理] 返回 } 递归条件 { [ ...
- phpstorm 快速插入常用代码片段
- Z-Score数据标准化处理(python代码)
#/usr/bin/python def Z_Score(data): lenth = len(data) total = sum(data) ave = float(total)/lenth tem ...