Java 数据库简单操作类
数据库操作类,将所有连接数据库的配置信息以及基本的CRUD操作封装在一个类里,方便项目里使用,将连接数据库的基本信息放在配置文件 "dbinfo.properties" 中,通过类加载器调用(也可以通过ServletContext调用配置文件,或者配置在web.xml里通过ServletConfig调用),需要修改数据库连接信息时,只需修改配置文件即可。
- package com.latiny.db;
- import java.io.*;
- import java.sql.*;
- import java.util.ArrayList;
- import java.util.Properties;
- /*
- * 数据库操作类
- */
- public class DBUtil {
- //定义需要的变量
- private static String driver =null;
- private static String url =null;
- private static String user=null;
- private static String password=null;
- private static Connection conn;
- //使用PreparedStatment可以防止sql注入
- private static PreparedStatement ps;
- private static ResultSet rs;
- private static CallableStatement cs;
- //读配置文件
- private static Properties pp=null;
- private static InputStream fis=null;
- //加载驱动,只需要执行一次
- static
- {
- try
- {
- pp = new Properties();
- //当我们使用java web的时候,读取文件要使用类加载器
- fis = DBUtil.class.getClassLoader().getResourceAsStream("dbinfo.properties");
- pp.load(fis);
- driver = pp.getProperty("DRIVER");
- url = pp.getProperty("URL");
- user = pp.getProperty("USER");
- password = pp.getProperty("PASSWORD");
- // 1 加载驱动
- Class.forName(driver);
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- try
- {
- fis.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- fis = null;
- }
- }
- /*
- * 获取Connection连接
- */
- public static Connection getConn()
- {
- try
- {
- // 2 获取数据库连接
- conn = DriverManager.getConnection(url, user, password);
- }
- catch (SQLException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return conn;
- }
- /*
- * 直接返回rs结果,此方法不能关闭rs,因为后面调用它的类还会用到,如果关闭则不能正常使用
- */
- public static ResultSet queryResult(String sql, String[] parameters)
- {
- try
- {
- conn = getConn();
- // 3 创建Statement对象
- ps = conn.prepareStatement(sql);
- // 4 给问号赋值,即给sql语句的条件参数赋值如果需要的话
- if(parameters!=null)
- {
- for(int i=1; i<=parameters.length; i++)
- {
- ps.setString(i, parameters[i-1]);
- }
- }
- // 5 执行sql获取返回结果
- rs = ps.executeQuery();
- }
- catch (SQLException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return rs;
- }
- /*
- * 将rs结果封装成ArrayList,然后可以关闭rs,节省数据库访问资源
- */
- public static ArrayList queryResult2(String sql, String[] parameters)
- {
- ArrayList al = new ArrayList();
- try
- {
- //2 获取数据库连接
- conn = getConn();
- //3 创建Statement对象
- ps = conn.prepareStatement(sql);
- //4 给问号赋值,即给sql语句的条件参数赋值如果需要的话
- if(parameters!=null)
- {
- for(int i=1; i<=parameters.length; i++)
- {
- ps.setString(i, parameters[i-1]);
- }
- }
- //5 执行sql语句获取返回结果
- rs = ps.executeQuery();
- //获取rs的结构
- ResultSetMetaData rsmd = rs.getMetaData();
- //获取查询语句的列数
- int column = rsmd.getColumnCount();
- while(rs.next())
- {
- //对象数组,存储一行数据
- Object[] objs = new Object[column];
- for(int i=0; i<objs.length; i++)
- {
- objs[i] = rs.getObject(i+1);
- }
- al.add(objs);
- }
- }
- catch (SQLException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally
- {
- //关闭资源
- close(rs, ps, conn);
- }
- return al;
- }
- //调用存储过程,带输入输出参数的
- public static CallableStatement callProcedure(String sql, String[] inputPara, Integer[] outputPara)
- {
- try
- {
- conn = getConn();
- cs = conn.prepareCall(sql);
- for(int i=0; inputPara!=null && i<inputPara.length; i++)
- {
- cs.setObject(i+1, inputPara[i]);
- }
- //给output参数赋值
- for(int j=0; outputPara!=null && j<outputPara.length; j++)
- {
- cs.registerOutParameter(inputPara.length+1+j, outputPara[j]);
- }
- cs.execute();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally
- {
- close(rs, ps, conn);
- }
- return cs;
- }
- //update, insert, delete
- public static Integer updateData(String sql, String[] parameters)
- {
- int result = 0;
- try
- {
- conn = getConn();
- ps = conn.prepareStatement(sql);
- if(parameters!=null)
- {
- for(int i=0; i<parameters.length; i++)
- {
- ps.setObject(i+1, parameters[i]);
- }
- }
- //执行executeUpdate并且返回受影响的行数
- result = ps.executeUpdate();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- close(rs, ps, conn);
- }
- return result;
- }
- //关闭对应的数据库连接资源
- public static void close(ResultSet rs1, PreparedStatement ps1, Connection conn1)
- {
- try
- {
- if(rs1!=null)
- {
- rs1.close();
- }
- if(ps1!=null)
- {
- ps1.close();
- }
- if(conn1!=null)
- {
- conn1.close();
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
dbinfo.properties文件配置信息
- DRIVER=com.mysql.jdbc.Driver
- URL=jdbc:mysql://localhost:3306/servlet
- USER=latiny
- PASSWORD=123456
Java 数据库简单操作类的更多相关文章
- Intellij IDEA集成mybatis-generator插件自动生成数据库实体操作类
Intellij IDEA集成mybatis-generator插件自动生成数据库实体操作类 转载至:https://blog.csdn.net/fishinhouse/article/details ...
- github上创建java项目简单操作
github上创建java项目简单操作 参考L: github上创建java项目简单操作 - CSDN博客http://blog.csdn.net/qq_29392425/article/detail ...
- SQL数据库简单操作
sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured ...
- [转]html5 js 访问 sqlite 数据库的操作类
本文转自:http://blog.csdn.net/tsxw24/article/details/7613815 webkit 核心的浏览器提供了 3个 api接口,用于访问本地sqlite数据,但使 ...
- java csv 文件 操作类
一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...
- MongoDB数据库简单操作
之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数 ...
- fastCMS数据库相关操作类
fastCMS针对数据库的操作有以下几个类: 1.[paging_Class]分页类 此类用于分页检索数据库内符合条件的记录 1) 支持百万级数据分页 2) 支持多种类型的SQL语法,比如 Left ...
- sqlhelper 数据库帮助操作类
数据库帮助类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- MySQL数据库简单操作
title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...
随机推荐
- 网络协议与OSI体系结构
网络协议与网络体系结构 一.网络协议的概念 1.含义: 网络协议是计算机间进行通信时遵循的一些约定和规则 2.三要素: (1)语法:用于确定协议元素的格式,即数据与控制信息的结构 (2)语义:用于确定 ...
- [Java] SpringMVC工作原理之一:DispatcherServlet
一.DispatcherServlet 处理流程 在整个 Spring MVC 框架中,DispatcherServlet 处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应工作.在看 Di ...
- 新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo
新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo ...
- dp 洛谷P1977 出租车拼车 线性dp
题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...
- 设计模式のChainOfResponsibilityPattern(责任链模式)----行为模式
一.产生背景 职责链模式是一种行为模式,为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求.将这些对象连接成一条链,并沿着这条链传递该请求,直到有一个对象处理它.避免请求发送者与接 ...
- WPF模板(二)应用
本次内容来源于电子书,和上一篇一样. 在WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate.其中ControlTemplate和Items ...
- [容斥原理] hdu 4135 Co-prime
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135 Co-prime Time Limit: 2000/1000 MS (Java/Others) ...
- BZOJ4327:[JSOI2012]玄武密码(SAM)
Description 在美丽的玄武湖畔,鸡鸣寺边,鸡笼山前,有一块富饶而秀美的土地,人们唤作进香河.相传一日,一缕紫气从天而至,只一瞬间便消失在了进香河中.老人们说,这是玄武神灵将天书藏匿在此. ...
- python的格式化输出
Python的格式化输出有两种: 一.类似于C语言的printf的方法 二.类似于C#的方法
- maven下载及安装
一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录,本 ...