1 packagecom.latiny.db;2

3 import java.io.*;4 import java.sql.*;5 importjava.util.ArrayList;6 importjava.util.Properties;7

8 /*

9 * 数据库操作类10 */

11

12 public classDBUtil {13

14 //定义需要的变量

15 private static String driver =null;16 private static String url =null;17 private static String user=null;18 private static String password=null;19

20 private staticConnection conn;21 //使用PreparedStatment可以防止sql注入

22 private staticPreparedStatement ps;23 private staticResultSet rs;24 private staticCallableStatement cs;25

26 //读配置文件

27 private static Properties pp=null;28 private static InputStream fis=null;29

30

31 //加载驱动,只需要执行一次

32 static

33 {34 try

35 {36 pp = newProperties();37

38 //当我们使用java web的时候,读取文件要使用类加载器

39 fis = DBUtil.class.getClassLoader().getResourceAsStream("dbinfo.properties");40

41 pp.load(fis);42 driver = pp.getProperty("DRIVER");43 url = pp.getProperty("URL");44 user = pp.getProperty("USER");45 password = pp.getProperty("PASSWORD");46

47 //1 加载驱动

48 Class.forName(driver);49

50 }51 catch(Exception e)52 {53 e.printStackTrace();54 }55 finally

56 {57 try

58 {59 fis.close();60 } catch(IOException e) {61 //TODO Auto-generated catch block

62 e.printStackTrace();63 }64 fis = null;65 }66 }67

68 /*

69 * 获取Connection连接70 */

71 public staticConnection getConn()72 {73 try

74 {75 //2 获取数据库连接

76 conn =DriverManager.getConnection(url, user, password);77 }78 catch(SQLException e)79 {80 //TODO Auto-generated catch block

81 e.printStackTrace();82 }83

84 returnconn;85 }86

87 /*

88 * 直接返回rs结果,此方法不能关闭rs,因为后面调用它的类还会用到,如果关闭则不能正常使用89 */

90 public staticResultSet queryResult(String sql, String[] parameters)91 {92 try

93 {94 conn =getConn();95 //3 创建Statement对象

96 ps =conn.prepareStatement(sql);97 //4 给问号赋值,即给sql语句的条件参数赋值如果需要的话

98 if(parameters!=null)99 {100 for(int i=1; i<=parameters.length; i++)101 {102 ps.setString(i, parameters[i-1]);103 }104 }105

106 //5 执行sql获取返回结果

107 rs =ps.executeQuery();108 }109 catch(SQLException e)110 {111 //TODO Auto-generated catch block

112 e.printStackTrace();113 }114

115 returnrs;116 }117

118 /*

119 * 将rs结果封装成ArrayList,然后可以关闭rs,节省数据库访问资源120 */

121 public staticArrayList queryResult2(String sql, String[] parameters)122 {123 ArrayList al = newArrayList();124

125 try

126 {127 //2 获取数据库连接

128 conn =getConn();129 //3 创建Statement对象

130 ps =conn.prepareStatement(sql);

132 //4 给问号赋值,即给sql语句的条件参数赋值如果需要的话

133 if(parameters!=null)134 {135 for(int i=1; i<=parameters.length; i++)136 {137 ps.setString(i, parameters[i-1]);138 }139 }140

141 //5 执行sql语句获取返回结果

142 rs =ps.executeQuery();143

144 //获取rs的结构

145 ResultSetMetaData rsmd =rs.getMetaData();146 //获取查询语句的列数

147 int column =rsmd.getColumnCount();148

149 while(rs.next())150 {151 //对象数组,存储一行数据

152 Object[] objs = newObject[column];153 for(int i=0; i

160 }161 catch(SQLException e)162 {163 //TODO Auto-generated catch block

164 e.printStackTrace();165 }166 finally

167 {168 //关闭资源

169 close(rs, ps, conn);170 }171

172 returnal;173 }174

175 //调用存储过程,带输入输出参数的

176 public staticCallableStatement callProcedure(String sql, String[] inputPara, Integer[] outputPara)177 {178

179 try

180 {181 conn =getConn();182 cs =conn.prepareCall(sql);183 for(int i=0; inputPara!=null && i

188 //给output参数赋值

189 for(int j=0; outputPara!=null && j

194 cs.execute();195

196 } catch(SQLException e) {197 //TODO Auto-generated catch block

198 e.printStackTrace();199 }200 finally

201 {202 close(rs, ps, conn);203 }204

205 returncs;206

207 }208

209 //update, insert, delete

210 public staticInteger updateData(String sql, String[] parameters)211 {212 int result = 0;213 try

214 {215 conn =getConn();216 ps =conn.prepareStatement(sql);217 if(parameters!=null)218 {219 for(int i=0; i

225 //执行executeUpdate并且返回受影响的行数

226 result =ps.executeUpdate();227

228 }229 catch(Exception e)230 {231 e.printStackTrace();232 }233 finally

234 {235 close(rs, ps, conn);236 }237

238 returnresult;239 }240

241 //关闭对应的数据库连接资源

242 public static voidclose(ResultSet rs1, PreparedStatement ps1, Connection conn1)243 {244

245 try

246 {247 if(rs1!=null)248 {249 rs1.close();250 }251 if(ps1!=null)252 {253 ps1.close();254 }255 if(conn1!=null)256 {257 conn1.close();258 }259

260 } catch(SQLException e) {261 //TODO Auto-generated catch block

262 e.printStackTrace();263 }264

265 }266 }

java mysql 操作类_Java 数据库简单操作类相关推荐

  1. java properties文件 安全_java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] | 学步园...

    java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] 数据库读取工具类 package com.db; import java.sql.Connection; ...

  2. mfc搜索新建access字段_MFC ODBC类 Access数据库的操作

    MFC ODBC类 Access数据库的操作 2008年11月17日 新建一个Access数据库,数据库名是data.mdb新建一个表Ttest,两个字段ID,name 表内容如下 ID name 1 ...

  3. java mysql 回滚_Java 中对数据库操作时的 回滚

    Connection conn=null; conn.rollback()就可以回滚 //用jdbc连接数据库 //举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定 ...

  4. Java 8流中的数据库CRUD操作

    在开始使用新工具时要克服的最大障碍是让您着手处理小事情. 到目前为止,您可能对新的Java 8 Stream API的工作方式充满信心,但是您可能尚未将其用于数据库查询. 为了帮助您开始使用Strea ...

  5. java mysql 分布式锁_Java分布式锁之数据库方式实现

    之前的文章<Java分布式锁实现>中列举了分布式锁的3种实现方式,分别是基于数据库实现,基于缓存实现和基于zookeeper实现.三种实现方式各有可取之处,本篇文章就详细讲解一下Java分 ...

  6. java mysql教程基于_java基于jdbc连接mysql数据库功能实例详解

    本文实例讲述了java基于jdbc连接mysql数据库的方法.分享给大家供大家参考,具体如下: 一.JDBC简介 Java 数据库连接,(Java Database Connectivity,简称JD ...

  7. MySQL第二讲 - 数据表简单操作 与 “增删查改的开头部分- 增”- 细节狂魔

    文章目录 前文知识点回顾   SQL语句 >>操作指令 (不区分大小写) 1.显示数据库:show databases; 2.创建数据库:create database 数据库名; [如果 ...

  8. flask mysql orm_Flask笔记:数据库ORM操作MySQL+pymysql/mysql-python+SQLAlchemy/Flask-SQLAlchemy...

    Python中使用sqlalchemy插件可以实现ORM(Object Relationship Mapping,模型关系映射)框架,而Flask中的flask-sqlalchemy其实就是在sqla ...

  9. ubuntu安装mysql可视化工具MySQL-workbench及简单操作

    一.使用命令行在ubuntu下安装mysql可视化工具MySQL-workbench Step1:安装MySQL-workbench 方案一:如果你已经装好mysql的相关服务,那么直接使用如下命令即 ...

最新文章

  1. 基于 WPF + Modern UI 的 公司OA小助手 开发总结
  2. map for循环_如何用Map、Filter和Reduce替换Python For循环?
  3. Redis-Session无状态会话技术
  4. 应用上线前的“体检”,你知道需要检测哪些指标吗?
  5. 解决del找不到关键词‘province‘的问题和思想
  6. 怎么增加android模拟器内存卡,增加android模拟器的内存大小
  7. .NET 4.0新增命名空间:System.Collections.Concurrent
  8. 收藏 | 12个神经网络可视化工具!
  9. U盘美化(更换U盘logo和页面背景软件)
  10. 清华大学计算机杜瑜皓,我在清华等你来|2015国际信息学奥赛全球第四名杜瑜皓:人生不搏枉少年...
  11. WiFi 转DMX512模块 支持Art-Net sACN RDM DMX
  12. drozer安全测试
  13. 核方法 Kernel method
  14. 融创与泛海达成交易 获得京沪优质稀缺土地资源
  15. jenkins构建报错: ssh: connect to host github.com port 22: Connection timed out
  16. 会话技术——Cookie
  17. geek_How-To Geek正在寻找远程全职技术作家
  18. apscheduler任务配置信息,实现100%数据库化
  19. hdu2017青岛网络赛Pythagoras(Tree of primitive Pythagorean triples)
  20. 11个基于vue的UI框架

热门文章

  1. C/C++之大端模式和小端模式
  2. go读取excel_Excelize发布2.1.0版本,Go语言Excel文档基础库
  3. python max函数_Python max内置函数详细介绍
  4. 内联函数有什么优点?内联函数与宏定义的区别?
  5. C++对象模型探索 / 子类的内存布局
  6. 启明云端分享| 小明实测优化后的ESP32-S2点 3.92寸分辨率为320*320的彩屏刷新帧率
  7. 华为真的注册鸿蒙,“鸿蒙”真的来了!华为注册了整本山海经?
  8. vim 插件_你不得不知道的适用于程序员的VIM插件
  9. mysql中b树索引_Mongo和Mysql中的B树索引
  10. 前15天mysql_Mysql查询今天/昨天/15天前/上个月/去年/上周每日等函数