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 ...
随机推荐
- notepad++ 字符处理: 字符前后删除 或 删除未包含字符串的行
字符串前后删除 删除str之后的所有字符用,打开替换(Ctrl+H) :str.*$ 删除str之前的所有字符用:^.*str 如果是其他字符就把str替换为其他字符 ---------------- ...
- angular - collapse--TemplateRef
用的ant collapse组件 需要自定义Header 请忽略前面的dw... 主要是TemplateRef<void> 查了半天.可以实现效果,直接上代码,我也不懂为什么 反正实现了 ...
- 对Ajax的原理的理解和使用
1.什么是ajax? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方 ...
- 用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)
Google TensorFlow程序员点赞的文章! 前言 目录: - 向量表示以及它的维度 - rnn cell - rnn 向前传播 重点关注: - 如何把数据向量化的,它们的维度是怎么来的 ...
- 手写redux方法以及数组reduce方法
reduce能做什么? 1)求和 2)计算价格 3)合并数据 4)redux的compose方法 这篇文章主要内容是什么? 1)介绍reduce的主要作用 2)手写实现reduce方法 0)了解red ...
- 《自拍教程46》Python_adb自动拍照100张
Android手机测试, 涉及照相机(Camera)应用程序的稳定性测试的用例, 需要涉及100张照片的拍照自动化测试. 准备阶段 先清理老照片,照片一般存放在/scard/DCIM目录下 adb s ...
- Win2012+Nginx+IIS+xxfpm(服务版)
这次做了一个项目部署在环境为win2012+nginx1.13.5+mysql5.6+php7的环境下,服务器是阿里云的 由于之前没有这种经验,遇到了点坑(据参考文章里说的这坑还有些年份了),最开始自 ...
- STM32时钟配置方法
一.在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率 ...
- 创建Sphinx + GitHub + ReadtheDocs托管文档
最新博客链接 "Tsanfer's Blog" 创建Sphinx + GitHub + ReadtheDocs托管文档 Readthedocs在线电子书链接
- Windows主机与centOS虚拟机之间"ping不通"
为什么要遇到这个问题 这是我重新安装centOS7.5虚拟机之后遇到的问题——我需要安装一个SecureCRT工具,结果主机与虚拟机没有ping通. 在安装这个工具之前需要进行主机与虚拟机的相互pin ...