package util;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; public class JdbcUtil {
private static Connection conn;
private static PreparedStatement pstmt;
private static ResultSet rs; private JdbcUtil() {
super();
// TODO Auto-generated constructor stub
} // 连接数据库的操作
public static Connection getConn() {
if (conn == null) {
// 加载属性配置文件
// 创建属性对象
Properties prop = new Properties();
try {
// 加载指定名称的属性文件
prop.load(JdbcUtil.class.getClassLoader().getResourceAsStream(
"jdbc.properties"));
try {
// 根据文件的名称查找类文件
Class.forName(prop.getProperty("driver")); // 创建连接对象
try {
conn = DriverManager.getConnection(
prop.getProperty("url"),
prop.getProperty("user"),
prop.getProperty("pass"));
System.out.println("连接数据库连接成功"); } catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接数据库失败");
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out
.println("没有" + prop.getProperty("driver") + "文件");
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("属性文件加载出错");
e.printStackTrace();
}
}
return conn;
} public static void release(ResultSet rs, PreparedStatement pstmt) {
// 释放结果集
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 释放准备语句
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // 更新数据的操作增,删,改要用到的封装方法
public static boolean upDate(String sql, Object[] obj) {
boolean flag = false; try {
// 准备语句的创建,带有sql命令的对象
pstmt = getConn().prepareStatement(sql); for (int i = 1; i <= obj.length; i++) {
pstmt.setObject(i, obj[i - 1]);
}
int i = pstmt.executeUpdate();
if (i > 0) {
flag = true;
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
release(rs, pstmt);
}
return flag;
} // 进行批量删除处理
public static boolean updateBatchDel(String sql, Object[] ids) {
boolean flag = false;
Connection conn = getConn();
PreparedStatement pstmt = null;
ResultSet rs = null; try {
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < ids.length; i++) {
pstmt.setObject(1, ids[i]);
System.out.println(sql + "---------------" + ids[i]);
pstmt.addBatch();
}
int[] num = pstmt.executeBatch(); // 批量执行
for (int i = 0; i < num.length; i++) {
if (num[i] == 0) {
try {
conn.rollback(); // 进行事务回滚
return flag;
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
conn.commit();// 提交事务
flag = true;
} catch (SQLException e) { e.printStackTrace();
} finally {
release(rs, pstmt);
}
return flag;
} // 根据传入的表的名称,和每页数据得到传入表的所有的页数
// tableName:::::操作的数据表名称
// pagesize::::::每页显示的信息条数 public static Integer getCountPage(String tableName, Integer pagesize) {
Integer countPage = 0;
String sql = "select count(*) as c from " + tableName;
Connection conn = JdbcUtil.getConn();
PreparedStatement pstmt = null;
ResultSet rs = null;
conn = JdbcUtil.getConn();
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next()) {
int countRecord = rs.getInt("c");
countPage = countRecord % pagesize == 0 ? countRecord
/ pagesize : countRecord / pagesize + 1;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JdbcUtil.release(rs, pstmt);
}
return countPage;
} }

java(2014版)连接数据库的工具类的更多相关文章

  1. 在JAVA中自定义连接数据库的工具类

    为什么要自定义数据库连接的工具类: 在开发中,我们在对数据库进行操作时,必须要先获取数据库的连接,在上一篇随笔中提到的获取数据库连接的步骤为: 1.定义好4个参数并赋值 2.加载驱动类 3.获取数据库 ...

  2. java版MD5签名工具类

    package com.net.util; import java.security.MessageDigest; /** * MD5签名工具类 * @author zhangdi * */ publ ...

  3. Java操作文件夹的工具类

    Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...

  4. Java汉字转成汉语拼音工具类

    Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...

  5. java中excel导入\导出工具类

    1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...

  6. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  7. java代码行数统计工具类

    package com.syl.demo.test; import java.io.*; /** * java代码行数统计工具类 * Created by 孙义朗 on 2017/11/17 0017 ...

  8. Java加载Properties配置文件工具类

    Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...

  9. Java 操作Redis封装RedisTemplate工具类

    package com.example.redisdistlock.util; import org.springframework.beans.factory.annotation.Autowire ...

随机推荐

  1. Service完全解析(转)

    今天我们来讲一下Android中Service的相关内容. Service在Android中和Activity是属于同一级别上的组件,我们可以将他们认为是两个好哥们,Activity仪表不凡,迷倒万千 ...

  2. 【解题报告】[动态规划] RQNOJ PID106 / 最大加权矩形

    原题地址:http://www.rqnoj.cn/problem/106 解题思路: 一维的情况下求最大字串和的状态转移方程是:s[i]=max{s[i-1]+a[i],a[i]} 二维的情况下,只要 ...

  3. WebAPI初探

    由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主 ...

  4. CH340在STM32实现一键下载电路

    在做基于STM32的多功能MP3播放器的课题时,在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计. 在画PCB初期原理图部分,对采用CH340G设计的一键下载电路不 ...

  5. python27+django1.9添加api

    我们进入Python的交互 shell 并使用Django提供的API.要进入Python shell,使用python manage.py shell 使用这个而不是简单的输入"pytho ...

  6. 代码所见所得方式发布.xml

    pre{ line-height:1; color:#b836b3; background-color:#000000; font-size:16px;}.sysFunc{color:#19ef0b; ...

  7. MySQL_PHP学习笔记_2015_0614_PHP传参总结_URL传参_表单传参

    1. PHP 传参总结   1.1 url 传参     解析方法(下面两种解读方式均可以): $firstName1 = $_GET['firstName']; $firstName2 = $_RE ...

  8. 3 years in Tencent game

    心里一直有继续写博文的愿望,却一直被各种借口打断,现在回头一看,已经在腾讯待了3年半之久.3年半是个比较尴尬的时间点,不好意思说自己是游戏从业老兵,但又觉得自己对于行业已经看到比较清楚了:从当年毕业时 ...

  9. windows创建虚拟界面

    定义 VDesktopName: PAnsiChar; //虚拟桌面名 VDesktop: HDESK; //虚拟桌面   创建 VDesktopName := 'MYDESK'; VDesktop ...

  10. 使用nodejs中httpProxy代理时候出现404异常

    在公司中使用nodejs构建代理服务器实现前后台分离,代码不能拿出来,然后出现httpProxy代理资源的时候老是出现404.明明被代理的接口是存在的.代码大概如下: var http = requi ...