package com.jxr.database;
import java.sql.*;
import java.io.FileInputStream;
import java.util.Calendar;
/**
* User: hcmfys@163.com
* Date: 2009-11-20
* Time: 20:03:45
* To change
*/
public abstract class SqlHelper {
private Connection con;
private Statement stmt;
private DataType type;
public SqlHelper(String connectionString, DataType type, String userName, String passWord) throws SQLException,
ClassNotFoundException, IllegalAccessException, InstantiationException {
setDataType(type);
switch (getDataType()) {
case Acess:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
break;
case MySql:
Class.forName("com.mysql.jdbc.Driver").newInstance();
break;
case SQL:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
break;
case Orace:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
break;
}
con = DriverManager.getConnection(connectionString, userName, passWord);
}
public SqlHelper(String connectionString, DataType type) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
this(connectionString, type, "", "");
}
public SqlHelper(String connectionString) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
this(connectionString, DataType.Acess, "", "");
}
protected SqlHelper(Connection con) {
this.con = con;
}
protected ResultSet ExecuteSql(String sql) throws SQLException {
stmt = GetStatement();
return stmt.executeQuery(sql);
}
protected Statement GetStatement() throws SQLException {
return con.createStatement(/*ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE */);
}
/*
* 执行存储过程
*/
public ResultSet ExecuteProcedure(String sql, SqlParamater... pars) throws SQLException {
CallableStatement stmt = con.prepareCall(sql);
for (SqlParamater sp : pars) {
switch (sp.getType()) {
case INTEGER: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.INTEGER);
break;
default:
stmt.setInt(sp.getName(), Integer.parseInt(sp.getValue().toString()));
break;
}
break;
}
case VARCHAR: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.VARCHAR);
break;
default:
stmt.setString(sp.getName(), String.valueOf(sp.getValue()));
break;
}
break;
}
case BOOLEAN: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.BOOLEAN);
break;
default:
stmt.setBoolean(sp.getName(), Boolean.valueOf(sp.getValue().toString()));
break;
}
break;
}
case Float: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.FLOAT);
break;
default:
stmt.setFloat(sp.getName(), Float.valueOf(sp.getValue().toString()));
break;
}
break;
}
case DOUBLE: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.DOUBLE);
break;
default:
stmt.setDouble(sp.getName(), Double.valueOf(sp.getValue().toString()));
break;
}
break;
}
case BLOB: {
FileInputStream fin = (FileInputStream) sp.getValue();
stmt.setBlob(sp.getName(), fin, sp.getLength());
break;
}
case BIT: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.BIT);
break;
default:
stmt.setByte(sp.getName(), Byte.valueOf(sp.getValue().toString()));
break;
}
break;
}
case DATE: {
switch (sp.getInputType()) {
case OutPut:
stmt.registerOutParameter(sp.getName(), Types.DATE);
break;
default:
stmt.setDate(sp.getName(), Date.valueOf(sp.getValue().toString()));
break;
}
break;
}
case BINARY:
break;
case CLOB:
break;
case DECIMAL:
break;
case OutPut:
break;
case SQLXML:
break;
case TIME:
break;
case TINYINT:
break;
case VARBINARY:
break;
}
}
return stmt.executeQuery();
}
protected boolean ExecuteQuery(String sql) throws SQLException {
return GetStatement().execute(sql);
}
private void setDataType(DataType type) {
this.type = type;
}
private DataType getDataType() {
if (this.type == null)
return DataType.Acess;
else
return this.type;
}
public enum CommandType {
Transport,
Text
}
public enum DataType {
SQL,
Acess,
MySql,
Orace,
IBM_DB2
}
/*
* 必须调用释放资源
*/
protected void dispose() {
if (stmt != null)
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (con != null)
try {
if (!con.isClosed())
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
总的来说,"韩顺平SQLHelper类"是一个针对Oracle 10g数据库的便捷工具,它封装了JDBC操作,帮助开发者快速进行数据库操作。虽然现代开发中可能有更多先进的选择,但在学习和理解JDBC原理,或者在不使用ORM框架的小型...
提供的`SQLHelper(Java版)使用说明文档.doc`应包含详细的使用示例、方法说明以及常见问题解答,对于快速上手和解决实际问题非常有帮助。 综上所述,`SQLHelper`类在Java开发中是一个实用的工具,它通过简化数据库...
SQLHelper是一个在编程中常用的工具类,特别是在Java开发中,用于简化数据库操作。它提供了对SQL语句的封装,使得开发者无需直接与JDBC API打交道,可以更方便、高效地执行常见的数据库操作,如增、删、改、查。在这...
总的来说,`DbUtils` 和 `SqlHelper` 是Java Web开发中非常实用的工具,它们帮助开发者专注于业务逻辑,而不是底层的数据库操作,提高了开发效率,降低了出错的可能性。理解并熟练运用这两个工具,对于提升Java Web...
通过以上介绍,我们可以看到`SqlHelper`工具类为初学者提供了一个良好的学习资源,帮助他们理解如何在Java中使用DAO模式进行数据库操作。此外,该工具类也具备一定的实用性,可以作为项目中的基础组件,方便快速地...
本篇文章将详细探讨Java中的SQL帮助类以及如何利用JDBC(Java Database Connectivity)进行数据库交互。 首先,JDBC是Java平台的标准API,它允许Java程序与各种数据库进行通信。通过JDBC,开发者可以创建数据库连接...
SqlHelper.java 是一个 SQL 帮助类,用于执行 SQL 语句。 2. 配置文件 工具包使用一个配置文件 dbInfo.properties,用于存储数据库连接信息。该文件包含四个参数:url、driver、username 和 password。这四个参数...
例如,`sqlhelper`可能是一个用于帮助执行SQL的工具类或库,它可以封装JDBC的常用操作,使代码更加简洁。 总之,Java通过JDBC直接与Oracle数据库交互更为推荐,尤其是在大型项目中。而ODBC在小型项目或已有ODBC数据...
数据库连接帮助你快速开发ublic class Sqlhelper { private static Connection con=null; private static PreparedStatement ps=null; private static ResultSet rs=null; private static String user=""; ...
在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的标准API。它提供了连接、查询、更新数据库的能力。...在实际项目中,`Helper类`可以帮助我们编写更加整洁、易于维护的代码。
在SQLHelper类中,定义了一个close方法用于统一关闭资源,并且在finally块中调用close方法,确保无论是否发生异常,资源都能被正确关闭。 5. JDBC驱动和连接字符串:在建立数据库连接时,需要指定JDBC驱动和数据库...
这里我们讨论的"数据库操作类"主要包括三个关键文件:`SqlHelper.cs`、`AccessHelper.cs`和`ConfigHelper.cs`。这三个类在C#编程中通常用于协助开发者高效、安全地与各种数据库进行交互。 1. **SqlHelper.cs**: `...
在Java编程中,连接数据库是常见的任务,而MySQL作为一个广泛使用的...`DBUtil`类的封装使得数据库连接的管理和操作更加便捷,而遵循JavaBean规范的实体类则帮助我们将数据库记录映射到Java对象,简化了数据处理流程。
例如,开发者可以创建一个SqlHelper实例,然后调用其方法执行SQL,无需直接与JDBC接口打交道,降低了出错的可能性。 总结起来,数据库类A是一个实用的工具,它抽象了数据库操作的复杂性,提供了一套简洁的API供...
5. `SqlHelper.java`:这是一个SQL辅助类,可能包含了处理数据库操作的通用方法,如连接数据库、执行SQL语句、处理结果集等。这个类是整个系统与数据库交互的核心,它抽象了数据库操作,使得其他组件可以更专注于...
"SqlHelper.java"是数据库操作工具类,它封装了JDBC(Java Database Connectivity)接口,简化了数据库连接、查询、插入、更新和删除等操作。开发者无需直接编写繁琐的SQL语句,而是通过调用SqlHelper提供的方法,就...
Java提供了JDBC(Java Database Connectivity)API,可以连接到各种关系型数据库,如MySQL、Oracle等。你需要学习如何创建表、执行SQL语句以及处理结果集。 6. **数据访问对象(DAO)模式**:为了分离业务逻辑和...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。在这个...