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 ...
随机推荐
- 自动设置IP地址bat脚本
自动获取IP及DNS: netsh interface ip set address name="本地连接" source=dhcpnetsh interface ip set d ...
- 【HIHOCODER 1589】回文子串的数量(Manacher)
描述 给定一个字符串S,请统计S的所有|S| * (|S| + 1) / 2个子串中(首尾位置不同就算作不同的子串),有多少个是回文字符串? 输入 一个只包含小写字母的字符串S. 对于30%的数据,S ...
- 笔记-python-实用-程序运算时间计算
方法1 import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.no ...
- C++实现Behavioral - Observer模式 (转)
转http://patmusing.blog.163.com/blog/static/13583496020101501923571/ 也称为Dependents或Publish-Subscribe模 ...
- WPF使用异步+绑定的方式处理大数据量
WPF的优势在于界面处理,即使是这样,在面对大数据量的时候也免不了界面假死,同一个线程里处理界面跟大数据量,这是不可避免的.解决办法还是有的,可以使用分页加载,虚拟加载,动态加载,增加条件限制... ...
- Netcore 基础之TagHelper知识
饮水思源,来自:http://www.cnblogs.com/liontone 的BLOG中关于taghelper中的内容 概要 TagHelper是ASP.NET 5的一个新特性.也许在你还没有听说 ...
- mantisbt邮件配置
PHP.INI里面 [mail function]; For Win32 only.#SMTP = 192.168.0.249SMTP = smtp.163.comsmtp_port = 25 ; F ...
- 关于 NSData 的数据类型(2进制,16进制之间)及深入剖析
1. NSData 与 NSString NSData-> NSString NSString *aString = [[NSString alloc initWithData:adataenc ...
- Leetcode 472.连接词
连接词 给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat" ...
- 【bzoj1941】[Sdoi2010]Hide and Seek KD-tree
题目描述 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了消除寂寞感,他决定和他的好朋友giPi(鸡皮)玩一个更加寂寞的游戏---捉迷藏. ...