数据库帮助类

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. HDU1069:Monkey and Banana(最长上升子序列的应用)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1069 这题挺简单的,给定一个箱子的长宽高,要求啰箱子,但必须保证下面箱子的长和宽必须大于上面的箱子. 一个 ...

  2. React:快速上手(1)——基础知识

    React:快速上手(1)——基础知识 React(有时叫React.js或ReactJS)是一个为数据提供渲染为HTML视图的开源JavaScript库,用于构建用户界面. JSX.元素及渲染 1. ...

  3. strtok()函数、fseek()函数、fwrite()函数、fread()函数的使用

    在电子词典这个项目过程中遇到了几个主要的问题,第一个是怎么解决把翻译分开这个.第二个事情就是怎么把结构体写到文件中.这两个问题,一个是关于字符串的操作一个是关于文件的操作. strtok函数 char ...

  4. dirname和shell常用命令

    $ cd `dirname $0` 和PWD%}  显示当前目录名称${#var}             替换为变量字符个数特殊变量$ 当前SHELL的PID? 前一个命令的退出状态! 后台执行的上 ...

  5. 【HTML5校企公益课】第四天

    1.上午考试没去.. 2.下午跟不上.. 变色.html <!DOCTYPE html> <html> <head> <meta charset=" ...

  6. Django学习笔记之Django Form表单

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  7. ios 中实现storyboard 与xib 之间的切换

    1,跳转到xib 假设有一个按钮,这个按钮就是实现跳转的,那么在这个按钮的点击事件中,代码可以这样写. AViewController *a1= [[AViewController alloc]ini ...

  8. 分布式集群Session原理及实现共享

    1.什么是Session/Cookie? 用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互.HTTP协议本身是无状态的,当用户的第一次访问请求结束后,后端服务器就无法知道下一次来访问的还是 ...

  9. 20145217《网络对抗》 MAL_简单后门学习总结

    20145217<网络对抗> MAL_简单后门学习总结 实践内容: 1.netcat的应用 2.socat的应用 3.meterpreter的应用 知识点学习总结 后门程序一般是指那些绕过 ...

  10. 自学 iOS 开发的一些经验 - 转自无网不剩的博客

    不知不觉作为 iOS 开发也有两年多的时间了,记得当初看到 OC 的语法时,愣是被吓了回去,隔了好久才重新耐下心去啃一啃.啃了一阵,觉得大概有了点概念,看到 Cocoa 那么多的 Class,又懵了, ...