数据库帮助类

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. 连接postgresql

    # psycopg2 engine=create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')#  python 连 ...

  2. Web框架简介

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  3. Ajax传地址URL编码格式

    当我们用Ajax传递路径的时候,有可能会出错,尤其是路径中有汉字的时候,传递的路径与接收的路径不同.解决方法:在传递路径的时候对路径编码,接收的时候解码存入数据库. 如: <!DOCTYPE h ...

  4. SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类

    ObjectHelper的主要功能有: 1.通过反射获取Entity的实例的字段值和表名,跳过自增键并填入Dictionary<string,string>中. namespace RA. ...

  5. 增for语句内容

    #author:leon #"hello world!" for i in range(10): #循环十次,每一次循环赋一个0-9中的数字给i . print("--- ...

  6. 利用cgroup控制进程使用的资源(cpu、内存等)

    实验环境:centos 6.10 1.安装libcgroup yum install -y libcgroup 2.进入资源控制器默认挂载目录/cgroup [root@hadoop1 cgroup] ...

  7. 关于camera 构架设计的一点看法

    camera的构架目前来看有两种,一种是集中式管理,比如说建立一个引擎,引擎向上提供接口,向下管理所有模块.把camera的所有功能划分为不同的模块,又引擎统一管理.模块的结构就比较随意了,可以统一接 ...

  8. 查看linuxCPU信息

    linux 下查看机器是cpu是几核的 几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu ...

  9. Hibernate关联关系映射之一对一关联关系

    人和身份证之间就是一个典型的一对一关联关系.实现一对一关联关系映射的方式有两种一种是基于外键,一种是基于主键,下面我们先看基于外键的关联方式 首先看他们的实体类 Person类 ? 1 2 3 4 5 ...

  10. 使用axis2构建webservice

    axis2是可以实现webservice的一个插件,使用这个插件可以发布webservice 1:可以使用这个插件来发布webservice,可以看网址:http://clq9761.iteye.co ...