package com.dangdang.msg.dbutil;

import com.dangdang.msg.configure.*;
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList; import org.apache.log4j.Logger; /**
* mysql 的数据类,只包含数据库建立,nosql的执行
*
* @author 李朋飞
*/ public class DBHelper {
/**
* 获取数据库的连接
*
* @return 返回conn,
*/
public static Logger logger;
private static Connection conn = null; public static void getConnection() {
logger = Logger.getLogger(DBHelper.class);
try {
Class.forName(Config.dbConfig.getDbdriver()).newInstance(); // 加载数据库驱动
conn = (Connection) DriverManager.getConnection(
Config.dbConfig.getDbhost(), Config.dbConfig.getUser(),
Config.dbConfig.getPassword());
conn.setAutoCommit(false);
} catch (ClassNotFoundException e) {
logger.error("未找到类:" + Config.dbConfig.getDbdriver(), e);
} catch (SQLException e) {
logger.error("无法连接数据库", e);
} catch (Exception e) {
logger.error("其他异常", e);
}
} public static boolean commitJob() {
try {
conn.commit();
return true;
} catch (SQLException e) {
logger.error("commit error!");
return false;
}
} public static Connection getConn() {
// 若超时,或者连接中断
if (true == isConnOutTime())
getConnection();
return conn;
} /**
* 判断数据库连接是否未超时
* isConnection
* return boolean true,则未超时,否则超时
*/ private static boolean isConnOutTime() {
try {
// 若未初始化连接,则连接初始化
if (conn == null || conn.isClosed() == true)
return true;
// ping ,查看是否连接超时
if (conn instanceof com.mysql.jdbc.Connection) {
conn.ping();
}
} catch (SQLException e) {
logger.error("连接超时", e);
return true;
}
return true;
} /**
* 增删改【Add、Del、Update】
*
* @param sql
* 需要执行的SQL语句
* @return int 返回是否成功,若失败,则返回-1,若成功,但未修改数据库,则返回0,否则返回正整数
*/ public static int executeNonQuery(String sql) throws SQLException {
int result = 0;
Statement stmt = null;
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
return result;
} /**
* 查询SQL语句,预期结果为一个String数组,返回结果
*
* @param sql
* 所要执行的sql语句
* @return 返回值为预期结果
* @throws SQLException
* SQL执行错误异常
*/
public static String getString(String sql) throws SQLException { Statement stmt = null;
ResultSet rs = null;
String ret = null; stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (false == rs.wasNull() && rs.next())
ret = rs.getString(1);
return ret;
} /**
* 查询SQL语句,该SQL语句返回结果包含多行一列,返回该列
*
* @param sql
* 需要主席邢的sql语句
* @return 返回值为ArrayList
* @throws SQLException
* 抛出sql异常
*/
public static ArrayList<String> getList(String sql) throws SQLException {
Statement stmt = null;
ResultSet rs = null;
ArrayList<String> ret = new ArrayList<String>();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.wasNull())
return null;
while (rs.next())
ret.add(rs.getString(1)); return ret;
}
}

java数据库 DBHelper的更多相关文章

  1. JDBC与JAVA数据库编程

    一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...

  2. JAVA数据库基本操作 (转)

    JAVA数据库基本操作指南   Java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接. 一.取得数据库连接 1.用DriverManager取数据库连接 ...

  3. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...

  4. Java数据库设计14个技巧

    Java数据库设计14个技巧   1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对 ...

  5. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

  6. MinerBean.java 数据库表 miner bean

    MinerBean.java 数据库表 miner bean package com.iteye.injavawetrust.miner; import java.util.Date; /** * 数 ...

  7. Java数据库学习之模糊查询(like )

    Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...

  8. Java数据库操作(MySQL与SQLserver)

    在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发 ...

  9. Java 数据库操作

    目录 Java数据库组织架构 下载驱动包 连接数据库 连接数据库的三个步骤 连接数据库的高开销 Statement接口介绍 PreparedStatement类 使用PreparedStatement ...

随机推荐

  1. js中的内置方法的兼容写法

    1.如果浏览器不支持every属性,every的实现原理 if(Array.prototype.every===undefined){ Array.prototype.every=function(f ...

  2. jsp内置对象(三)-----response对象

    response对象  response对象包含了响应客户端请求的有关信息,但在JSP中很少直接用到它.他是HttpServletResponse类的实例,response对象具有页面作用域,即访问一 ...

  3. Java 8 Optional 良心指南,建议收藏

    想学习,永远都不晚,尤其是针对 Java 8 里面的好东西,Optional 就是其中之一,该类提供了一种用于表示可选值而非空引用的类级别解决方案.作为一名 Java 程序员,我真的是烦透了 Null ...

  4. zabbix图表出现中文乱码

    搭建完成Zabbix监控服务器之后,切换到中文语言,图表展示出现乱码,如图所示 按照网上流传的上传windows下的字体的方法,还是不行,最后发现是PHP编译时的问题: php在编译时开启了-enab ...

  5. 给萌新的 TS custom transformer plugin 教程——TypeScript 自定义转换器插件

    xuld/原创 Custom transformer (自定义转换器)是干什么的 简单说,TypeScript 可以将 TS 源码编译成 JS 代码,自定义转换器插件则可以让你定制生成的代码.比如删掉 ...

  6. GO系列 | 5分钟入门GO【译】

    什么是Google Go? Google Go是由Robert Griesmer,Rob Pike和Ken Thompson在Google设计的一种开源编程语言. Go在语法上类似于C语言: 除了内存 ...

  7. (转)const的内部链接属性(C++中适用)

    转载自:http://xiangwangfeng.com/2011/05/02/const%E7%9A%84%E5%86%85%E9%83%A8%E9%93%BE%E6%8E%A5%E5%B1%9E% ...

  8. 群辉DS418play体验+经验分享

    群辉DS418play体验+经验分享     群辉DS418play体验+经验分享   购买初衷 近期百度网盘到期,我又需要重复下载很多资源(游戏.电影.毛片),下载没速度&下完没空间怎么办? ...

  9. JAVA 转换 树结构数据

    JAVA 转换 树结构数据 第一步:引入fastjson <dependency> <groupId>com.alibaba</groupId> <artif ...

  10. SpringBoot源码分析(一)@SpringBootApplication解析

    @SpringBootApplication解析 三层注解 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(exclu ...