`
jiaoxujin
  • 浏览: 63388 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

连接数据库的相关代码

阅读更多
package ecogp.dml;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import org.apache.log4j.Logger;
import oracle.jdbc.driver.OracleDriver;
/**
* <P>データベースをアクセス</P>
*
* @author B.Gao
*
*/
public class DBAccess {
private Connection conn = null;
    /** ステートメントオブジェクト */
    private Statement stmt;
   
    static Logger logger = Logger.getLogger(DBAccess.class.getName());
    /** プリペアードステートメントオブジェクト */
    private PreparedStatement pstmt;

public void createConnection(String dbServer, String dbName, String dbUser, String dbPassword) {
     String url = "jdbc:oracle:thin:@" + dbServer + ":" + "1521" + ":" + dbName;
     try {
       DriverManager.registerDriver(new OracleDriver());
       conn = DriverManager.getConnection(url, dbUser, dbPassword);
       conn.setAutoCommit(false);
     } catch (Exception e) {
         System.out.println(e.toString());
      logger.debug("DBの接続に失敗します。");
      conn = null;
     }
}

public Connection getConn() {
  return this.conn;
}

public boolean isConnection() throws SQLException{
  boolean ret*** = true;
  if (conn == null || conn.isClosed()) {
   ret*** = false;
  }
  return ret***;
}

    /**
     * 値を返す SQL を実行する。
     * <p>
     * 値を返す SQL とは、たとえば、select があげられる。
     * <p>
     * @param sql 実行したい SQL文字列
     * @return ResutSet オブジェクト
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public ResultSet executeQuery(String sql) throws SQLException {
        System.out.println(sql);
        ResultSet rslt = null;
        try {
            if (stmt != null) {
                stmt.close();
            }
            stmt = conn.createStatement();
            rslt = stmt.executeQuery(sql);
        }
        catch (SQLException e) {
            throw e;
        }
        return rslt;
    }
    /**
     * 値を返さない SQL を実行する。
     * <p>
     * 値を返さない SQL とは、たとえば、insert、update があげられる。
     * SQL は、外部ファイルに記載した PreparedStatement 用 SQL 構文を使用する。
     * <p>
     * @param sql 実行したい SQL文字列
     * @return 処理件数
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public int executeUpdate(String sql) throws SQLException {
        System.out.println(sql);
       int status = 0;
        try {
            if (stmt != null) {
                stmt.close();
            }
            stmt = conn.createStatement();
            status = stmt.executeUpdate(sql);
        }
        catch (SQLException e) {
            throw e;
        }
        return statu*;
    }
    /**
     * **ecuteUpdate にて、前回実行したSQLと変更がない場合には、prepareStatement の生成を行わない。
     * そのために、前回実行したSQLの番号を保存するための変数。
     */
    private String lastPrepareSQL = "";
    private HashMap preparedStatementCache = new HashMap(); 

/**
     * 値を返す SQL を実行する。
     * <p>
     * 値を返す SQL とは、たとえば、select があげられる。
     * SQL は、外部ファイルに記載した PreparedStatement 用 SQL 構文を使用する。
     * <p>
     * @param sqlid 実行したい SQLのID
     * @param sqlparams SQL のパラメータ(パラメータがない場合には、null)
     * @return ResutSet オブジェクト
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public ResultSet executeQuery(String sql, Object[] sqlparams) throws SQLException {
        System.out.println(sql);
        if (sqlparams == null || sqlparams.length == 0) {
            if (stmt != null) {
                stmt.close();
            }
            stmt = conn.createStatement();
            return stmt.executeQuery(sql);
        }
        else {
            try {
                if (lastPrepareSQL.equals(sql) && pstmt != null) {
                    // 前回実行した SQL と同じであれば、ステートメントを再利用する
                }
                else {
                    if (pstmt != null) {
                        pstmt.close();
                    }
                    pstmt = conn.prepareStatement(sql);
                    lastPrepareSQL = sql;
                }
                for (int i = 0; i < sqlparams.length; i++) {
                    try {
                        pstmt.setObject(i + 1, sqlparams[i]);
                    }
                    catch (SQLException e) {
                        throw e;
                    }
                }
                return pstmt.executeQuery();
            }
            catch (SQLException e) {
                throw e;
            }
        }
    }

    /**
     * 値を返さない SQL を実行する。
     * <p>
     * 値を返さない SQL とは、たとえば、insert、update があげられる。
     * <p>
     * @param sqlid 実行したい SQLのID
     * @param sqlparams SQL のパラメータ(パラメータがない場合には、null)
     * @return 処理件数
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public int executeUpdate(String sql, Object[] sqlparams) throws SQLException {
        System.out.println(sql);
        if (sqlparams == null || sqlparams.length == 0) {
            if (stmt != null) {
                stmt.close();
            }
            stmt = conn.createStatement();
            return stmt.executeUpdate(sql);
        }
        else {
            try {
                if (lastPrepareSQL.equals(sql) && pstmt != null) {
                    // 前回実行した SQL と同じであれば、ステートメントを再利用する
                }
                else {
                    if (pstmt != null) {
                        pstmt.close();
                    }
                    pstmt = conn.prepareStatement(sql);
                    lastPrepareSQL = sql;
                }
//                StringBuffer logString = new StringBuffer(512);
                for (int i = 0; i < sqlparams.length; i++) {
                    try {
                        pstmt.setObject(i + 1, sqlparams[i]);
//                        logString.append(sqlparams[i] + ",");
                    }
                    catch (SQLException e) {
//                        cat.error(
//                            "executeUpdate(id,obj[]) setObject:SqlParams[" + i +
//                            "]=" + sqlparams[i]);
                        throw e;
                    }
                    pstmt.addBatch();
                }
                return pstmt.executeUpdate();
            }
            catch (SQLException e) {
                throw e;
            }
        }
    }

    /**
     * commit を実行する。
     * <p>
     * データベースへの接続は、AutoCommit を行っていないため、すべての処理が正常に完了した場合には、
     * 最後に必ず このメソッドを呼び出す。
     * <p>
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public void commit() throws SQLException {
        if (conn != null)
         conn.commit();
    }
    /**
     * rollback を実行する。
     * <p>
     * 処理が正常に完了しなかった場合には、このメソッドを呼び出して、データベースへの更新の
     * 取消を行う。
     * <p>
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public void rollback() throws SQLException {
        if (conn != null && conn.isClosed()==false){
         conn.rollback();
        }
    }
    /**
     * Connectionのcloseを行う
     * @throws SQLException なんらかのデータベースエラーが発生した時
     */
    public void releaseConnection() throws SQLException {
        if (stmt != null) {
            stmt.close();
        }
        if (pstmt != null) {
            pstmt.close();
        }
        if (conn != null) {
         conn.close();
        }
    }
}
分享到:
评论

相关推荐

    基于java的开发源码-在Servlet中连接数据库的代码.zip

    基于java的开发源码-在Servlet中连接数据库的代码.zip 基于java的开发源码-在Servlet中连接数据库的代码.zip 基于java的开发源码-在Servlet中连接数据库的代码.zip 基于java的开发源码-在Servlet中连接数据库的代码....

    spring连接数据库代码

    Spring 连接数据库代码详解 Spring 连接数据库是 Java 企业级应用程序中的一项重要技术,通过 Spring 框架,可以轻松地实现数据库的连接和操作。本文将详细讲解如何使用 Spring 连接数据库,包括创建数据库、配置 ...

    php连接数据库代码

    php连接数据库的代码,用php语言连接数据库,在html可以显示

    使用JS写服务器端连接数据库的代码示例

    安装完成后,我们可以开始编写服务器端连接数据库的代码。以下是一个基本示例: ```javascript const mysql = require('mysql2'); // 创建数据库连接配置 const config = { host: 'localhost', // 数据库服务器...

    java写的连接数据库的代码

    java写的连接数据库的代码,给大家分享一下,直接可以用的

    .net连接数据库代码

    .net连接数据库相关代码就是连接相关的代码

    C++连接mysql数据库 源代码

    在"C++连接mysql数据库 源代码"这个项目中,我们可以学习到以下几个关键知识点: 1. **MySQL C++ Connector**: 连接MySQL数据库时,通常会使用MySQL官方提供的C++ Connector,这是一个用于C++应用程序的数据库驱动...

    jsp连接数据库代码大全.pdf

    JSP 连接数据库代码大全 本文档提供了 JSP 连接 Oracle、SQL Server 和 DB2 数据库的完整代码示例,旨在帮助初学者学习 JSP 连接数据库的基本知识。下面是对标题、描述、标签和部分内容的详细解释。 一、JSP 连接 ...

    JDBC连接数据库步骤及代码

    ### JDBC连接数据库步骤详解 #### 一、简介 在Java开发中,经常需要与数据库进行交互,例如查询数据、更新数据等操作。为了方便开发者进行这些操作,Sun公司推出了一套标准的Java访问数据库的API——Java Database...

    java连接数据库代码

    Java连接数据库是应用程序与数据库交互的基础,通过Java的JDBC(Java Database Connectivity)API,开发者可以实现对多种数据库系统的操作。以下将详细讲解标题和描述中提到的知识点,并结合给出的部分内容进行扩展...

    JSP的连接数据库并修改数据库代码

    本文将深入探讨如何使用JSP来连接数据库,并基于此修改数据库内容的关键知识点。 ### 1. JSP与数据库连接 在JSP页面中,连接数据库是通过Java Database Connectivity (JDBC) API完成的。JDBC为Java应用程序提供了...

    python数据库(mysql)连接代码

    python连接mysql数据库代码。必须先下载安装mysql数据库,并启动数据库

    delphi源码连接测试Ado方式得到数据库连接代码

    在描述中提到,此代码适用于"JAVA,asp的数据库调试连接",这表明该Delphi源码可能提供了一个通用的数据库连接模板,可以被其他语言如Java或ASP作为参考,尤其是对于调试数据库连接部分的代码。 在实际的Delphi代码...

    C#连接数据库源代码

    本资源“C#连接数据库源代码”提供了一系列用于与数据库交互的C#代码片段,涵盖了数据库操作的核心功能,如插入数据、读取记录、删除数据以及填充表格等。以下是对这些关键知识点的详细解释: 1. **数据库连接**:...

    sql包 连接数据库的代码

    在这个场景下,"sql包 连接数据库的代码"是指使用特定编程语言(如Java、Python或Node.js)的代码片段,它利用SQL包来建立和管理到数据库的连接。 在Java中,我们通常会使用JDBC(Java Database Connectivity)API...

    C#连接MySQL数据库代码示例

    连接数据库的关键在于创建一个` MySqlConnection `对象,该对象是`MySql.Data.MySqlClient`命名空间下的类。连接字符串通常包含以下元素:服务器地址(如localhost)、数据库名、用户名和密码。例如: ```csharp ...

    动态连接数据库代码文件

    本文件包“动态连接数据库代码文件”提供了一个强大的sqlhelper文件,它简化了数据库操作,是开发过程中的必备工具。 首先,我们来详细了解一下`sqlhelper`类。SqlHelper通常是一个辅助类,用于执行SQL语句,包括但...

    vb连接数据库常用代码总结

    在VB(Visual Basic)编程中,连接数据库是常见的任务,尤其在开发数据驱动的应用程序时。本篇文章将详细总结几种常用的VB连接数据库的方法,重点讨论动态连接和相对路径控制数据库的技术,以及如何利用控件如...

Global site tag (gtag.js) - Google Analytics