数据库帮助类

package com.cwnu.uitl;

import java.sql.*;

/**
* 数据库基础操作实现类
*
* @author BlackWinter
*
* @date 2009-9-7 上午01:16:19
*
* @file com.ebook.dao.DbHelper.java
*
* @version 3.0
*/
public class DbHelper { // 数据库名
final static String database = "boaidb"; // 数据库连接方法
final static ConnectionType mode = ConnectionType.JDBC_MySQL; // 服务器IP
final static String server = "localhost"; // 用户名
final static String userName = "root"; // 密码
final static String password = "123456"; // 编码格式
final static String encode = "UTF-8"; /**
* 创建通用连接
*
* @return 连接对象
*/
public static Connection createConn() {
if (mode == ConnectionType.JDBC_ODBC_BRIDGE) {
// SQLServer桥连接
return getConn("sun.jdbc.odbc.JdbcOdbcDriver",
"jdbc:odbc:driver=sql server;server=" + server
+ ";database=" + database);
} else if (mode == ConnectionType.JDBC_MICROSOFT) {
// SQLServer JDBC连接
return getConn("com.microsoft.sqlserver.jdbc.SQLServerDriver",
"jdbc:sqlserver://" + server + ":1433;DataBaseName="
+ database);
} else if (mode == ConnectionType.JDBC_MySQL) {
// MySQL连接
return getConn("com.mysql.jdbc.Driver", "jdbc:mysql://" + server
+ ":3306/" + database + "?characterEncoding=" + encode);
} else if (mode == ConnectionType.JDBC_ORACLE) {
// Oracle连接
return getConn("oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:@" + server + ":1521:ORCL");
}
return null;
} /**
* 创建专用连接
*
* @param driver:驱动名称
* @param url:连接地址
* @param userName:用户名
* @param password:密码
* @return:连接对象
*/
public static Connection createConn(String driver, String url,
String userName, String password) {
try {
Class.forName(driver);
return DriverManager.getConnection(url, userName, password);
} catch (ClassNotFoundException ex) {
System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
} catch (SQLException ex) {
System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
}
return null;
} /**
* 启动事务
*
* @param conn
* 连接对象
*/
public static void beginTransaction(Connection conn) {
try {
conn.setAutoCommit(false);
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
} /**
* 提交事务
*
* @param conn
* 连接对象
*/
public static void commitTransaction(Connection conn) {
try {
conn.commit();
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
} /**
* 回滚事务
*
* @param conn
* 连接对象
*/
public static void rollbackTransaction(Connection conn) {
try {
conn.rollback();
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
} /**
* 执行数据库的增删改方法.
*
* @param sqlstr
* 增删改Sql语句
* @param conn
* 连接对象
* @return 是否成功
*/
public static boolean execUpdate(String sqlstr, Connection conn) {
if (conn == null) {
System.out.println("数据联接对象为空.不能进行更新操作...");
return false;
}
try {
Statement ps = conn.createStatement();
return (ps.executeUpdate(sqlstr) != -1);
} catch (SQLException ex) {
System.out.println("数据库执行更新失败,详细信息为:" + ex.getMessage());
return false;
}
} /**
* 执行数据库的增删改方法
*
* @param sqlstr
* 增删改Sql语句
* @param conn
* 连接对象
* @return 影响的行数
*/
public static int execUpdateCounts(String sqlstr, Connection conn) {
if (conn == null) {
System.out.println("数据联接对象为空.不能进行更新操作...");
return 0;
}
try {
Statement ps = conn.createStatement();
return (ps.executeUpdate(sqlstr));
} catch (SQLException ex) {
System.out.println("数据库执行更新失败,详细信息为:" + ex.getMessage());
return 0;
}
} /**
* 执行数据库的插入删除方法. 如进行Insert操作.sql语句为:insert into
* testTable(字段1,字段2,字段3)values(?,?,?); 调用的时候需传入代替?号的对象数组.如: new
* Object[]{val1,val2,val3}
*
* @param sqlstr
* 增删改的Sql语句
* @param sqlParam
* Sql参数
* @param conn
* 连接对象
* @return 是否成功
*/
public static boolean execUpdate(String sqlstr, Object[] sqlParam,
Connection conn) {
if (conn == null) {
System.out.println("数据联接对象为空.不能进行更新操作...");
return false;
}
try {
PreparedStatement ps = conn.prepareStatement(sqlstr);
for (int i = 0; i < sqlParam.length; i++) {
ps.setObject(i + 1, sqlParam[i]);
}
return (ps.executeUpdate() != -1);
} catch (SQLException ex) {
System.out.println("数据库执行更新失败,详细信息为:" + ex.getMessage());
return false;
}
} /**
*
* @param sqlstr
* 查询Sql语句
* @param conn
* 连接对象
* @return ResultSet结果集
*/
public static ResultSet execQuery(String sqlstr, Connection conn) {
if (conn == null) {
System.out.println("数据联接对象为空.不能进行查询操作...");
return null;
}
try {
Statement ps = conn.createStatement();
return ps.executeQuery(sqlstr);
} catch (SQLException ex) {
System.out.println("数据库执行查询失败,详细信息为:" + ex.getMessage());
return null;
}
} /**
* 执行数据库的查询方法.外面操作完结果集,请记住调用close方法 list:SQL参数. 调用的时候需传入代替?号的对象数组. 如:new
* Object[]{val1,val2,val3}
*
* @param sqlstr
* 查询sql语句
* @param sqlParam
* sql参数
* @param conn
* 连接对象
* @return ResultSet结果集
*/
public static ResultSet execQuery(String sqlstr, Object[] sqlParam,
Connection conn) {
if (conn == null) {
System.out.println("数据联接对象为空.不能进行查询操作...");
return null;
}
try {
PreparedStatement ps = conn.prepareStatement(sqlstr);
for (int i = 0; i < sqlParam.length; i++) {
ps.setObject(i + 1, sqlParam[i]);
}
return ps.executeQuery();
} catch (SQLException ex) {
System.out.println("数据库执行查询失败,详细信息为:" + ex.getMessage());
return null;
}
} /**
* 使用存贮过程查询
*
* @param sql
* 存储过程执行语句。如:"{call GetRecordAsPage(?,?,?,?)}"
* @param sqlParam
* 存储过程参数
* @param conn
* 连接对象
* @return ResultSet结果集
*/
public static ResultSet execCall(String sql, Object[] sqlParam,
Connection conn) {
if (conn == null) {
System.out.println("数据联接对象为空.不能进行查询操作...");
return null;
}
try {
PreparedStatement ps = conn.prepareCall(sql);
for (int i = 0; i < sqlParam.length; i++) {
if (sqlParam[i] == null) {
ps.setNull(i + 1, 2);
} else {
ps.setObject(i + 1, sqlParam[i]);
}
}
return ps.executeQuery();
} catch (SQLException ex) {
System.out.println("数据库执行查询失败,详细信息为:" + ex.getMessage());
return null;
}
}
/**
* 创建连接
* @param driver 连接驱动
* @param url 连接字符串
* @return 连接对象
*/
private static Connection getConn(String driver, String url) {
try {
Class.forName(driver);
return DriverManager.getConnection(url, userName, password);
} catch (ClassNotFoundException ex) {
System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
} catch (SQLException ex) {
System.out.println("数据库联接失败,详细信息为:" + ex.getMessage());
}
return null; } /**
* 数据库类型枚举
*
* @author BlackWinter
*
* @date 2009-9-30 上午11:17:20
*
* @file com.black.dao.impl.DbHelper.java
*
*/
public enum ConnectionType {
JDBC_ODBC_BRIDGE, JDBC_MICROSOFT, JDBC_MySQL, JDBC_ORACLE
}
}

数据抽象类

package com.zz.bean;

import java.util.ArrayList;
import java.util.Map; /**
* Bean接口类
* @author zz
*
*/
public interface BaseBean {
/**
* 添加一条数据,使用Map,对应数据库中表的字段
* @param entity
* @return
* @throws Exception
*/
public boolean Add(Map<String, Object> entity) ;
public boolean Del(int id);
public boolean Update(Map<String, Object> entity) throws Exception;
public Map<String, Object> FindOne(int id);
public Map<String, Object> FindOne(String condtion);
/**
*
* @return
* @throws Exception
*/
public ArrayList<Map<String, Object>> FindList() throws Exception;
/**
* 返回分页数据
* @param offset
* @param pagecount
* @return
* @throws Exception
*/
public ArrayList<Map<String, Object>> FindList(int offset,int pagecount,String condition);
/**
* 返回数据记录数量
* @return
*/
public int GetCount();
/**
* 根据条件返回数量
* @param condtion
* @return
*/
public int GetCount(String condtion) ; }

数据实现类

package com.zz.bean;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map; import javax.servlet.http.Cookie; import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;
import com.zz.uitl.DbHelper; /**
* 数据数的操作实现类
* @author zz
*
*/
public class BeanImpl implements BaseBean { private Connection conn;
private String tbname;//表名
private ArrayList<String> filed;//字段
public BeanImpl(){}
public BeanImpl(String tbname)
{
conn=DbHelper.createConn();
filed=new ArrayList<String>();
this.tbname=tbname;
if(conn!=null)
{
System.out.println("数据库连接成功的");
}
Statement st;
try {
st = conn.createStatement();
String sql="select * from "+tbname;
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData meta = rs.getMetaData();
for (int i = 1; i <= meta.getColumnCount(); i++)
{
String columnName = meta.getColumnName(i).toLowerCase();
filed.add(columnName);//往字段队列中添加
}
rs.close();//关闭连接
} catch (SQLException e) {
e.printStackTrace();
} }
public boolean Add(Map<String, Object> entity) {
String filed="";
String val="";
Object[] param=new Object[entity.size()];//创建一个和entity大小相等的数组
int i=0;
for (Map.Entry<String, Object> item : entity.entrySet())
{
filed+=item.getKey()+",";
val+="?"+",";
param[i]=item.getValue();
i++;
}
filed=filed.substring(0, filed.length()-1);//去除最后一个逗号
val=val.substring(0, val.length()-1);//去除最后一个逗号
String sql="insert into "+tbname+"("+filed+") values("+val+")";
System.out.println("sql语句:"+sql);
return DbHelper.execUpdate(sql, param, conn);
} /*
* 删除操作
* @see com.cwnu.bean.BaseBean#Del(int)
*/
public boolean Del(int id) {
String sql="delete from "+tbname+" where id="+id;
return DbHelper.execUpdate(sql, conn);
} /*
* 更新数据的方法
* @see com.cwnu.bean.BaseBean#Update(java.util.Map)
*/
public boolean Update(Map<String, Object> entity) throws Exception {
String upString="";
Object[] param=new Object[entity.size()];//创建一个和entity大小相等的数组
int i=0;
for (Map.Entry<String, Object> item : entity.entrySet())
{
upString+=item.getKey()+"=?,";
param[i]=item.getValue();
i++;
}
upString=upString.substring(0, upString.length()-1);//去除最后一个逗号 String sql="update "+tbname+" set "+upString+" where id="+entity.get("id");
System.out.println("sql语句:"+sql);
return DbHelper.execUpdate(sql, param, conn);
} public Map<String, Object> FindOne(int id) { String sql="select * from "+tbname+" where id="+id; ResultSet rs=DbHelper.execQuery(sql, conn);
try {
if(rs.next())
{
Map<String,Object> item=new HashMap<String, Object>();
//获取一个Map对象
for (int i = 0; i < filed.size(); i++) {
item.put(filed.get(i), rs.getObject(filed.get(i)));
}
return item; }
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} public ArrayList<Map<String,Object>> FindList() throws Exception { ArrayList<Map<String, Object>> list=new ArrayList<Map<String,Object>>(); String sql="select * from "+tbname; ResultSet rs=DbHelper.execQuery(sql, conn);
while(rs.next())
{
Map<String,Object> item=new HashMap<String, Object>();
//获取一个Map对象
for (int i = 0; i < filed.size(); i++) {
item.put(filed.get(i), rs.getObject(filed.get(i)));
}
list.add(item); }
return list;
}
public ArrayList<Map<String,Object>> FindList(int offset,int pagecount,String where) { ArrayList<Map<String, Object>> list=new ArrayList<Map<String,Object>>(); //String sql="select * from "+tbname+" "+where+" limit "+offset+","+pagecount+" "; String sql="select * from %s %s limit ?,? ";
Object[] param=new Object[]{offset,pagecount}; sql=String.format(sql, tbname,where);
System.out.println(sql); ResultSet rs=DbHelper.execQuery(sql, param,conn);
try {
while(rs.next())
{
Map<String,Object> item=new HashMap<String, Object>();
//获取一个Map对象
for (int i = 0; i < filed.size(); i++)
{
item.put(filed.get(i), rs.getObject(filed.get(i)));
}
list.add(item); }
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
} public int GetCount() {
String sql="select count(*) from "+tbname;
Statement st;
try {
st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
int count=-1;
if(rs.next())
{
count=rs.getInt(1);
}
return count;
} catch (SQLException e) {
e.printStackTrace();
} return -1;
}
public int GetCount(String condtion) {
String sql="select count(*) from "+tbname+" "+condtion;
Statement st;
try {
st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
int count=-1;
if(rs.next())
{
count=rs.getInt(1);
}
return count;
} catch (SQLException e) {
e.printStackTrace();
} return -1;
}
public Map<String, Object> FindOne(String condtion) {
String sql="select * from "+tbname+" "+condtion;
System.out.println(sql);
ResultSet rs=DbHelper.execQuery(sql, conn);
try {
if(rs.next())
{
Map<String,Object> item=new HashMap<String, Object>();
//获取一个Map对象
for (int i = 0; i < filed.size(); i++) {
item.put(filed.get(i), rs.getObject(filed.get(i)));
}
return item; }
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} }

java中常用的帮助类。加快开发速度的更多相关文章

  1. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  2. java中常用的工具类(三)

    继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类       ...

  3. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  4. Java基础学习(五)-- Java中常用的工具类、枚举、Java中的单例模式之详解

    Java中的常用类 1.Math : 位于java.lang包中 (1)Math.PI:返回一个最接近圆周率的 (2)Math.abs(-10):返回一个数的绝对值 (3)Math.cbrt(27): ...

  5. Java中常用的数据结构类

    结构体系图 List ArrayList.LinkedList.Vector有什么区别? ArrayList 只能装入引用对象(基本类型要转换为封装类): 线程不安全: 底层由数组实现(顺序表),因为 ...

  6. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  7. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  8. java中的反射机制在Android开发中的用处

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...

  9. JAVA中常用需要设置的三个环境变量(JAVA_HOME、CLASSPATH、PATH)

    JAVA中常用需要设置的三个环境变量: JAVA_HOME.CLASSPATH.PATH (一) 配置环境变量:(相对路径) 1. JAVA_HOME=x:/jdk1.6.0 2. 用%JAVA_HO ...

随机推荐

  1. python16_day11【MQ、Redis、Memcache】

    一.RabbitMQ 是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应 ...

  2. mysql binlog日志的三种模式

    1.statement level模式 每一条会修改数据的sql都会记录到master的bin-log中.slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行.优 ...

  3. python识别验证码

    1.tesseract-ocr安装 tesseract-ocr windows下载地址 http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr- ...

  4. java要注意的问题2

    八.替Java省点内存 某些Java程序是CPU密集型的,但它们会需要大量的内存.这类程序通常运行得很缓慢,因为它们对内存的需求很大.为了能提升这类应用的性能,可得给它们多留点内存.因此,假设我们有一 ...

  5. hibernate validator 验证

    @AssertTrue 用于boolean字段,该字段只能为true   @AssertFalse 该字段的值只能为false @CreditCardNumber 对信用卡号进行一个大致的验证 @De ...

  6. 执行用例,并生成报告——discover,HTMLRunner

    HTMLRunner需要下载Python3的格式,懒人链接:http://pan.baidu.com/s/1tp3Ts 参考:http://bbs.chinaunix.net/thread-41547 ...

  7. linux 相关使用总结

    1. 在centos下安装g++,如果输入 yum install g++,那么将会提示找不到g++.因为在centos下g++安装包名字叫做:gcc-c++ 所以应该输入 yum install g ...

  8. react-native navigation的学习与使用

    在很久之前,RN中文网说推荐用react-navigation替代navigator作为新的导航库,从RN 0.43版本开始,官方就已经停止维护Navigator了,所以强烈建议大家迁移到新的reac ...

  9. [LnOI2019]加特林轮盘赌(DP,概率期望)

    [LnOI2019]加特林轮盘赌(DP,概率期望) 题目链接 题解: 首先特判掉\(p=0/1\)的情况... 先考虑如果\(k=1\)怎么做到\(n^2\)的时间复杂度 设\(f[i]\)表示有\( ...

  10. LeetCode—— Invert Binary Tree

    LeetCode-- Invert Binary Tree Question invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 ...