java数据库 DBHelper
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的更多相关文章
- JDBC与JAVA数据库编程
一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...
- JAVA数据库基本操作 (转)
JAVA数据库基本操作指南 Java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接. 一.取得数据库连接 1.用DriverManager取数据库连接 ...
- java面向对象下:Java数据库编程
19.Java数据库编程: JDBC概述: JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...
- Java数据库设计14个技巧
Java数据库设计14个技巧 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对 ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- MinerBean.java 数据库表 miner bean
MinerBean.java 数据库表 miner bean package com.iteye.injavawetrust.miner; import java.util.Date; /** * 数 ...
- Java数据库学习之模糊查询(like )
Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...
- Java数据库操作(MySQL与SQLserver)
在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发 ...
- Java 数据库操作
目录 Java数据库组织架构 下载驱动包 连接数据库 连接数据库的三个步骤 连接数据库的高开销 Statement接口介绍 PreparedStatement类 使用PreparedStatement ...
随机推荐
- [CSS]CSS Position 详解
一. CSS position 属性介绍 CSS中position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型.有static,relative,absolute和fixed四种取值 ...
- Java8 新特性2——强大的Stream API
强大的Stream API Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作.简而言之,Stream API 提供 ...
- RuntimeError: No application found. Either work inside a view function or push an application context.
记录: 遇到这种报错信息: 在create_all()生成数据表的时候,添加app=app,指明app对象即可-----> create_all(app=app)
- NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型
在文章NLP(二十四)利用ALBERT实现命名实体识别中,笔者介绍了ALBERT+Bi-LSTM模型在命名实体识别方面的应用. 在本文中,笔者将介绍如何实现ALBERT+Bi-LSTM+CRF ...
- 内网渗透之权限维持 - MSF
年初九 天公生 0x034 MSF(美少妇) 启动msf msfconsole 先启动msf依赖的postgresql数据库 初始化数据库 msfdb init (要用普通用户) msf路径 /usr ...
- 面试官系统精讲Java源码及大厂真题系列之Java线程安全的解决办法
1. 背景 1.1 static修饰类变量.方法.方法块. public + static = 该变量任何类都可以直接访问,而且无需初始化类,直接使用 类名.static 变量 1.2 多个线程同时 ...
- PHP的json_encode和json_decode的区别
经常搞混的两个PHP函数: json_encode()是对变量进行json编码 json_encode()为要编码的值,且该函数只对utf8编码的数据有效 json_decode($json)对jso ...
- PHP变量存储结构
首先声明,我并没有去读PHP的源码,只是对于PHP的有时候诡异的表现感兴趣,找了一下开发人员laruence的博客结合PHP提供的函数debug_zval_dump刺探得到了本博客所阐述的工作机理.如 ...
- 深入理解JS引擎的执行机制
深入理解JS引擎的执行机制 1.灵魂三问 : JS为什么是单线程的? 为什么需要异步? 单线程又是如何实现异步的呢? 2.JS中的event loop(1) 3.JS中的event loop(2) 4 ...
- (转)协议森林05 我尽力 (IP协议详解)
协议森林05 我尽力 (IP协议详解) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! IPv4与IPv6头部的对比 我们已经在I ...