`
jackson_jar
  • 浏览: 37003 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jdbc DEMO (sql语句的批处理,事务处理,数据绑定prepare)

    博客分类:
  • java
阅读更多

package com.chinacountry.databases;
import java.sql.*;
import java.util.StringTokenizer;
public class connDB
{
    String sDBDriver = "org.gjt.mm.mysql.Driver";
    String sConnStr = "jdbc:mysql://10.100.27.13:3306/db1";
    Connection cn = null;
    Statement stmt;
    boolean autoCommit;
    private String DbType="MYSQL";
    //private String DbType="oracle";
    private connDB()
    {
       init();
    }
    private void init()
    {
        try
        {
            Class.forName(sDBDriver).newInstance();
            cn = DriverManager.getConnection(sConnStr,"naxweb","naxweb");

        }
        catch(Exception e)
        {
            System.err.println("conndb(): " + e.getMessage());
        }
    }
    public static connDB getNewInstance()
    {
        return new connDB();
    }
    //数据绑定的资料好像很少,有空给大家一个例子。在这里只能返回PreparedStatement。
    public PreparedStatement getPreparedStmt(String sql) throws SQLException
    {
        PreparedStatement preStmt=null;
        try
        {
            preStmt = cn.prepareStatement(sql);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            throw ex;
        }
        return preStmt;
    }
    public void beginTrans()  throws SQLException
    {   try
        {
        autoCommit=cn.getAutoCommit();
        cn.setAutoCommit(false);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.print("beginTrans Errors");
            throw ex;
        }
    }
    public void commit()  throws SQLException
    {
        try
        {
            cn.commit();
            cn.setAutoCommit(autoCommit);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.print("Commit Errors");
            throw ex;
        }
    }
    public void rollback()
    {
        try
        {
            cn.rollback();
            cn.setAutoCommit(autoCommit);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.print("Rollback Errors");
            //throw ex;
        }
    }
    public boolean getAutoCommit()  throws SQLException
    {
        boolean result=false;
        try
        {
            result=cn.getAutoCommit();
        }

  catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.println("getAutoCommit fail"+ex.getMessage());
            throw ex;
        }
        return result;
    }
    //默认的情况下一次executeQuery(String sql)是一次事务。
    //但是可以调用beginTrans(),然后多次executeQuery(String sql),最后commit()实现多sql的事务处理(注意在这种情况下如果发生违例,千万不要忘了在catch(){调用rollBack()})。
    //
    public ResultSet executeQuery(String sql) throws SQLException
    {
        ResultSet rs = null;
        try
        {
            stmt=cn.createStatement();
            rs = stmt.executeQuery(sql);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.println("conndb.executeQuery:"+ex.getMessage());
            throw ex;
        }
        return rs;
    }
    public void executeUpdate(String sql) throws SQLException
    {
        try
        {
            stmt=cn.createStatement();
            stmt.executeUpdate(sql);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.println("conndb.executeUpdate:"+ex.getMessage());
            throw ex;
        }
    }
    //Method doBatch 的参数sql,是由一些sql语句拼起来的,用;隔开。可以将许多的sql放在一个事物中,一次执行。
    public int[] doBatch(String sql)  throws SQLException
    {
        int[] rowResult=null;
        String a;
        try
        {
            //boolean autoCommit=cn.getAutoCommit();
            //cn.setAutoCommit(false);
            stmt=cn.createStatement();
            StringTokenizer st = new StringTokenizer(sql,";");
             while (st.hasMoreTokens())
             {
                 a=st.nextToken();
                 stmt.addBatch(a);
             }
             rowResult=stmt.executeBatch();
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            System.out.println("conndb.doBatch:"+ex.getMessage());
            throw ex;
        }
        return rowResult;
    }
    public String getDbType()
    {
        return DbType;
    }
    public void close() throws SQLException
    {
        try
        {
            stmt.close();
            stmt=null;
            cn.close();
            cn=null;
        }
        catch(SQLException ex)
        {
            ex.printStackTrace(); System.out.println("Closeing connection fail"+ex.getMessage());
            throw ex;

        }
    }
    public static void main(String[] args) throws Exception
    {
            connDB con=connDB.getNewInstance();
            System.out.print(con.getDbType());
    }
}

 

分享到:
评论

相关推荐

    连接jdbc时sql语句统一设置参数

    在Java编程中,连接数据库并执行SQL语句是常见的任务,而`JDBC`(Java Database Connectivity)就是实现这一目标的接口和API。本篇将深入讲解如何在使用JDBC时,通过统一的方式设置SQL语句中的参数,提高代码的...

    JDBC是执行SQL语句的Java API

    3. **Connection**: 表示与数据库的连接,提供了执行SQL语句和事务处理的方法。 4. **Statement**: 用于执行静态SQL语句的接口,支持基本的查询和数据操作。 5. **PreparedStatement**: 提供预编译的SQL语句,支持...

    使用JDBC的批处理功能

    在处理大量数据时,JDBC的批处理功能可以显著提高效率,减少网络通信次数,并优化数据库操作。本文将详细阐述JDBC批处理的基本概念、优势以及如何在实际应用中使用。 一、批处理的概念 批处理是指一次性提交多个SQL...

    Oracle 官方 JDBC Demo JAVA

    Oracle官方JDBC Demo是Oracle公司提供的Java数据库连接(JDBC)示例代码,旨在帮助开发者理解和使用JDBC驱动程序与Oracle数据库进行交互。这个压缩包包含了一些基础到高级的JDBC操作实例,对于初学者和有经验的开发...

    JDBC数据库操作值MySQL批处理操作

    MySQL批处理是JDBC提供的一种优化数据库操作的方法,它允许开发者一次提交多个SQL语句,从而提高数据处理效率。本文将深入探讨JDBC在MySQL数据库中的应用,以及如何实现批处理操作。 首先,理解JDBC的基础知识至关...

    JDBC for sql 2012

    JDBC支持事务处理,可以通过`Connection`对象的`setAutoCommit()`和`commit()`方法来控制事务的提交和回滚。 ```java conn.setAutoCommit(false); try { // SQL操作 conn.commit(); } catch (SQLException e) { ...

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    此版本的驱动程序支持最新的SQL标准,并提供了对多种数据库特性的广泛支持,如存储过程、事务处理、批处理操作等。 首先,JDBC Driver 3.0分为四种类型:Type 1、Type 2、Type 3和Type 4。在SQL Server JDBC中,...

    jdbc 增删改查事物处理, 批处理,以及预编译示例代码

    在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...

    批处理导入SQL文件

    批处理导入SQL文件是数据库管理中的一个重要操作,它主要用于高效地执行大量SQL语句,比如在数据迁移、数据库初始化或更新时。批处理通过合并多个SQL命令为一个单一的处理单元,可以显著提高数据处理速度,减少网络...

    JDBC高级批处理

    Java Database Connectivity (JDBC) 是Java平台中用于与数据库交互的一组接口和类,它是Java标准API的一部分,允许Java开发者执行SQL语句并处理结果。在处理大量数据时,JDBC提供了批处理功能,以提高性能和效率。...

    jdbc_sqlserver

    JDBC支持事务处理,可以在一组操作中控制数据的原子性、一致性、隔离性和持久性。通过`Connection`对象的`setAutoCommit(false)`禁用自动提交,然后手动调用`commit()`或`rollback()`。 8. **错误处理**: 在实际...

    sqljdbc.sqljdbc4.rar

    标题“sqljdbc.sqljdbc4.rar”指的是一个包含SQL Server JDBC驱动的压缩文件,其中可能包含了“sqljdbc.jar”和“sqljdbc4.jar”这两个版本的驱动。这些驱动是微软为Java应用程序提供连接到Microsoft SQL Server...

    sqljdbc和sqljdbc4

    SQLJDBC驱动程序允许Java开发者使用标准的JDBC API来执行SQL语句、处理结果集、事务管理和数据库连接管理。这些驱动程序在Java应用服务器、Web应用,如JSP(JavaServer Pages)中特别有用,因为它们提供了跨平台的...

    sql server2000 jdbc

    SQL Server 2000 JDBC 是Java编程语言与Microsoft SQL Server 2000数据库进行交互的一种重要方式。JDBC(Java Database Connectivity)是Java API,允许Java应用程序通过Java虚拟机(JVM)与各种数据库建立连接。在...

    如何获得PreparedStatement最终执行的sql语句

    在Java的JDBC编程中,`PreparedStatement`是一个非常重要的接口,它用于预编译SQL语句,提高了数据库操作的效率和安全性。当我们处理大量重复的SQL操作时,使用`PreparedStatement`可以避免SQL注入等问题,同时提升...

    JDBC进行批处理共4页.pdf.zip

    在Java数据库连接(Java Database Connectivity, JDBC)中,批处理是一项重要的功能,它允许开发者一次性提交多个SQL语句,从而提高数据处理的效率和性能。批处理是数据库操作中的优化手段,尤其在处理大量数据时,...

    jdbcDemo.sql

    jdbcDemo.sql

    jdbcdemo.sql

    jdbcdemo.sql

    JDBC的批量处理语句

    JDBC 批量处理语句是指使用 JDBC 连接数据库时,批量执行 SQL 语句的方法。这种方法可以大大提高更新处理速度,减少数据库访问次数,提高应用程序的性能。 在 JDBC 中,批量处理语句包括两个方法:addBatch(String)...

    sqljdbc和sqljdbc4jar包.rar

    该驱动提供了全面的SQL Server功能,包括事务管理、批处理、预编译语句等。 2. **SQLJDBC4**: 这是SQLJDBC的一个升级版,同样遵循JDBC Type 4规范,它增加了对Java SE 6的支持,并包含了对SSL加密连接的改进,增强...

Global site tag (gtag.js) - Google Analytics