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. 二:ZooKeeper术语概念

    一:Zookeeper的设计目标   -->Zookeeper致力于提供一个高性能,高可用,且具有严格的顺序访问控制能力(主要是写操作的严格顺行性)的分布式协调服务. -->高性能使得Zo ...

  2. Hadoop Hive基础sql语法

     目录 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的 ...

  3. javascript中createTextRange用法(focus)

    createtextrange createrange区别: 对象或元素不同,虽然都是返回TextRange.例如:     var r=document.body.createTextRange() ...

  4. 更新的packages.config所有的软件包?

    1. 你NuGet.exe的恢复你的包.运行的每个项目. nuget install packages.config 或用NuGet的2.7可以恢复所有包中的行. nuget restore Your ...

  5. C#调用WebService实现天气预报 http://www.webxml.com.cn

     C#调用WebService实现天气预报 2011-02-21 14:24:06 标签:天气预报 休闲 WebServices 职场 C# 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始 ...

  6. Drupal如何SQL查询传递参数?

    Drupal使用称之为“placeholder”的方式处理SQL查询参数: <?php // WRONG: $result = db_query("SELECT nid, title ...

  7. JavaScript专业规则12条

    学习JavaScript是困难的.它发展的如此之快,以至于在任何一个特定的时刻,你都不清楚自己是否“做错了”.有些时候,感觉像是坏的部分超过了好的部分.然而,讨论这些并没有意义,JavaScript正 ...

  8. Android的主要组件

    (一)Activity(活动) 作用:提供可视化用户界面 只能通过setContentView(View)来显示指定组件 View组件是所有UI控件.容器控件的基类,View组件就是android应用 ...

  9. SublimeText3 初探(工欲善其事,必先利其器)

    告别2015,迎来了2016.祝看到这篇博客的兄弟们都猴年发财,人生走上另一个高度. 新年新气象,猴年我会常常来更新自己的博客,希望能接触到更多的园友. sublime text3 和atom 各有各 ...

  10. Page Scroll Menu (页面中锚点菜单)

    Technorati 标签: Page Scroll Menu,页面锚点菜单,Menu,Too Long,页面太长   当页面太长时,会导致浏览不便,这时就需要一个页面锚点菜单(Page Scroll ...