zoukankan      html  css  js  c++  java
  • JDBC 基础

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    JDBC 编程基本步骤 

    一、装载驱动程序

      

    String DriveName="net.sourceforge.jtds.jdbc.Driver" 
    Class.forName(DriveName)

    在使用JDBC之前必须引入 相应的驱动jar包,不同的数据库产品会有各自的jar包。 DriveName为驱动jar包中的类。

    例如连接 sybase 可以使用 jtds-1.2.6.jar 和 jconn4.jar, 不同的数据库厂家都会对jdbc类做一些扩展,以便实现特殊功能。不过一般情况下使用标准的jdbc接口能满足大部分需求 。

    二、建立连接

    String ServerUrl="jdbc:sybase:Tds:HOSTNAME:5000/testdb";
    String UserName="sa";
    String Password="123456";
    
    Connection conn=DriverManager.getConnection(ServerUrl,
                        UserName, Password);
    ServerUrl 为连接字符串, 连接字符串包含jdbc使用的 subprotocol, 服务起地址和端口信息, 以及需要连接的数据库。连接字符串一般由驱动程序产家提供。 
    UserName 为用户名, Password为相应的密码

    三、创建操作对象

    Statement stment=conn.createStatement();
    ResutlSet rset=stment.executeQuery("SELECT * FROM T_SALES");

    Statement对象提供了执行SQL的方法executeXXXX(), 对应查询有 executeQuery(String sql)方法. 另外,还有PreparedStatement对象,可以预先对SQL做处理。

    PreparedStatement ppstment = conn.prepareStatement("insert into TXN_LOG  values (?, ?)");
      ppstment.setString(1, "first_field_content_here" );  //  1 对应第1个 ? 号
      ppstment.setString(2, "second_field_content_here" );  //  1 对应第1个 ? 号
      ppstment.execute();
    

    四、处理结果

    JDBC 使用 ResultSet对象存取select 语句返回的结果

    ResultSet rst=null;
    rst=stment.executeQuery("SELECT * FROM TXN_LOG");
    while(rst.next())
    {
        String outline=null;
        outline=rst.getString(1) +"|" ;     //     通过序号1 找到Field中的内容
        outline+=rst.getString("TXN");   // 通过字段名字找到Field中的内容
        System.out.println(outline);    
    }

    五、关闭连接

    conn.close()

    完成数据库操作之后,一般需要显示调用close方法,关闭连接。

    JDBC事务处理 

    一般JDBC连接数据库之后,默认设置为“自动提交”,即每次SQL操作都commit.  如果需要手动提交,则必须将自动提交功能设置为false.

    conn.setAutoCommit(false);
        ....    
        ....
    conn.commit()   // 提交

    非自动提交模式下,代码中必须 调用 commit方法。

    JDBC 批量处理

    对于大批量的数据插入、数据更新操作, 一般需要使用JDBC批量提交的方式处理。Statement 对象和 PreparedStatement 提供了 addBatch() 和 executeBatch方法来实现批量提交。

    // Statement实现
    stment.addBatch("SQL1");
    stment.addBatch("SQL2");
    ......
    stment.executeBatch();     // 执行批量处理
    
    
    // PreparedStatement 方式
    ppstment.setString(1, sb.toString());
    ppstment.setString(2, sb.toString());
    ppstment.addBatch();

     采用 批量处理的方式,可以大大提高处理性能

    JDBC 连接字符串对处理性能的影响

    今天测试Sybase的插入性能时,发现不同的连接字符串,处理性能不一样

    同一个jar中的驱动程序名  "net.sourceforge.jtds.jdbc.Driver"    jtds-1.2.6.jar

    1、"jdbc:jtds:sybase://ZHOUSHUANG02:5000/testdb"

    2、“jdbc:sybase:Tds:ZHOUSHUANG02:5000/testdb”

    采用同样的程序测试,批量提交方式每次 500条, 插入10w 条数据 

    标号 1 2 3 AVG
    1 "jdbc:jtds:sybase://ZHOUSHUANG02:5000/testdb" 28s 71s 72s 5
    2  “jdbc:sybase:Tds:ZHOUSHUANG02:5000/testdb” 14s 11s 11 13s

    从统计数据可以看出,不同的连接字符串的处理时间不一致。

  • 相关阅读:
    Brain network involved in autonomic functions 与自主功能相关的大脑网络
    Brief summary of classical components of ERP 事件相关成分(ERP)经典成分小结
    ICA & Percentage Variance Account For (PVAF)
    数据处理中白化Whitening的作用图解分析
    Loadings vs eigenvectors in PCA 主成分分析(PCA)中的负荷和特征向量
    主成分分析(PCA)和独立成分分析(ICA)相关资料
    Sketch of heart and QRS complex 心脏及QRS波群简图
    Brain Network visulation in EEG 脑电网络可视化
    Phase Locking Value (PLV) 神经信号的锁相值
    ubuntu16.04下的一些基本操作笔记
  • 原文地址:https://www.cnblogs.com/piepie/p/zhoushuang.html
Copyright © 2011-2022 走看看