数据库帮助类

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. mac截屏

    shift+command+3 : 截全屏 shift+command+4 : 出现十字架的坐标图标,画框截图

  2. [Mysql ]TIME ZONE

    mysql的时间相关的类型如下: 1. timestamp 时区敏感的 2. date 非时区敏感 3. datetime   非时区敏感 4. time 非时区敏感

  3. Java io流详解二

    原文地址https://www.cnblogs.com/xll1025/p/6418766.html 一.IO流概述 概述: IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间 ...

  4. iOS学习之二维码扫描

    这几天刚好将本人高仿新浪微博的事情进行一个阶段性的tag,在此也将这个项目在实现二维码扫描这个功能来做一个简要的记录.关于高仿新浪微博的源代码,本人已经将全部代码托管到github,地址在这里.欢迎大 ...

  5. go——通道

    相比Erlang,go并未实现严格的并发安全.允许全局变量.指针.引用类型这些非安全内存共享操作,就需要开发人员自行维护数据一致和完整性.Go鼓励使用CSP通道,以通信来代替内存共享,实现并发安全.作 ...

  6. Rest_framework-3

    目录: 返回值的封装 分页 视图 路由 渲染器 一 返回值的封装 a. API的基本框架 setting: 1 首先注册rest_framework 2 版本配置 REST_FRAMEWORK = { ...

  7. python网络编程——IO多路复用select/poll/epoll的使用

    转载博客: http://www.haiyun.me/archives/1056.html http://www.cnblogs.com/coser/archive/2012/01/06/231521 ...

  8. h5打开App的方法。

    在浏览器中: 法1: location.href = `${scheme}`;//location跳转App是几乎所以情况都支持的. 法2: var ifr = document.createElem ...

  9. 纯CSS3滑动开关按钮

    在线演示 本地下载

  10. React Native导航器之react-navigation使用

    在上一节Navigation组件,我们使用系统提供的导航组件做了一个跳转的例子,不过其实战能力不强,这里推荐一个超牛逼的第三方库:react-navigation.在讲react-navigation ...