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——全局变量&局部变量
>>> count = 5 >>> def function(): count = 10 print(10) >>> function() 10 ...
- 在spring boot中使用webSocket组件(一)
最近在项目中使用到了spring的webSocket组件,在这里和大家分享下,如有错误,欢迎大家指正. 在这里我使用的IDE工具是Intellij idea,框架是spring boot.spring ...
- Linux学习-额外(单一)核心模块编译
编译前注意事项 由于我们的核心原本就有提供很多的核心工具给硬件开发商来使用, 而硬件开发商也需要针对核心 所提供的功能来设计他们的驱动程序模块,因此, 我们如果想要自行使用硬件开发商所提供的模块 来进 ...
- zuul session 不一致的问题
配置文件: #不加这句话导致session不一致zuul.routes.intelligentsia-authority.sensitiveHeaders = Authorization 过滤器里面 ...
- 前端AI切图技巧
AI的基本使用 1.选中多个不同图层. 首先在AI右边工具栏找到“图层” 然后选择需要切图的图层(按住“ctrl”点击) 最后拖到PS里面的新建的图层. 还有个问题,就是图层关联太多,无法拖动某些图层 ...
- Selenium WebDriver- 操作浏览器的cookie
#encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver i ...
- uiautomatorviewer打不开
uiautomatorviewer打不开: 因为之前我下载的jdk版本为10,后来将jdk版本改为8之后就可以打开了.
- Leetcode 437.路径总和III
路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...
- PHP 教父鸟哥 Yar 的原理分析
模块越来越多,业务越来越复杂,RPC 就上场了,在 PHP 的世界里,鸟哥的作品一直备受广大网友的青睐.下面一起学习下鸟哥的 PRC 框架 Yar . 揭开 Yar 神秘面纱 RPC 采用客户端/服务 ...
- “玲珑杯”线上赛 Round #17 河南专场
闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的 玲珑杯”线上赛 Round #17 河南专场 Start Time:2017-06-24 12:00:00 End Time:2017-06 ...