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

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

JDBC 基础的更多相关文章

  1. jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用

    一.连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数 ...

  2. jdbc基础 (四) 批处理

    批处理,就是字面上的意思,一次性处理一批sql语句. 直接看例子吧: package com.cream.ice.jdbc; import java.sql.Connection; import ja ...

  3. jdbc基础 (三) 大文本、二进制数据处理

    LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...

  4. jdbc基础 (二) 通过properties配置文件连接数据库

    csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库 上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接 ...

  5. JDBC基础教程

    本文实例讲述了JDBC基础知识与技巧.分享给大家供大家参考.具体分析如下: 1.什么是JDBC? 通俗来讲JDBC技术就是通过java程序来发送SQL语句到数据库,数据库收到SQL语句后执行,把结果返 ...

  6. Java 中 JDBC 基础配置

    Java 中 JDBC 基础配置 <resource auth="Container" driverclassname="oracle.jdbc.driver.Or ...

  7. Unit01: JDBC原理 、 JDBC基础编程

    Unit01: JDBC原理 . JDBC基础编程 这个文件里面有两块内容: 1.用比较麻烦的方式连接数据库,test1(),test4() 2.创建DBTool,测试DBTool连接数据库 ,tes ...

  8. Java应用程序连接数据库--JDBC基础

    Java应用程序连接数据库--JDBC基础   Java应用程序连接数据库–JDBC基础 <!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency&g ...

  9. JDBC基础教程:tutorialspoint-jdbc

    来自turorialspoint的JDBC基础教程(英文),官网:https://www.tutorialspoint.com/jdbc/index.htm 这个教程在国内已经被翻译成中文(不过是属于 ...

  10. JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务

    JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...

随机推荐

  1. ios开发-第二天

    1.#import可保证无论头文件出现多少次,只包含一次,而#include相反. 2.如果用户不提供文件路径的话,那么argc的值为1,可以用来做是否错误的判断. 3.面向对象和面向过程的区别 面向 ...

  2. python简单词频统计

    任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 文件操作 字典 排序 lambda 代码 import codecs import matplotlib.pyplot as plt from ...

  3. DS18B20温度传感器知识点总结

    2018-01-1818:20:48 感觉自己最近有点凌乱,一个很简单的问题都能困扰自己很久.以前能很好使用和调试的DS18B20温度传感器,今天愣是搞了很久,妈卖批. 仅仅一个上拉电阻就困扰了我很久 ...

  4. 通过psping测试结果,初步判断远端服务器的状态

    1.psping的输出结果为如下正常显示时,说明远端服务器的IP及端口可用 C:\Users\he.liming>psping 139.219.66.205:4352 PsPing v2.10 ...

  5. maven系列--settings.xml

    安装maven,会有一份settings.xml文件,我们可以理解这份文件就是用来管理本地maven的一系列东西的.这里我先贴出一份完整的原始xml. <?xml version="1 ...

  6. zabbix3.2_yum官方文档centos 7版

    Installation from packages 1 Repository installation 2 Server installation with MySQL database 3 Ser ...

  7. matlab获取文件夹中的所有文件名(dir)

    当前目录中包含文件及目录如下: abc111.txt abc112.txt abc113.txt a\ (文件夹) CODE: >> dir('test')   %目录 .         ...

  8. TCP那些事儿(上)

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去 ...

  9. 2. getline()和get()

    1.面向行输入:getline() ---其实还可以接受第三个参数. getline()函数读取整行,调用该方法 使用cin.getline().该函数有两个参数, 第一个参数是是用来存储输入行的数组 ...

  10. 淘宝地址爬取及UI展示

    淘宝地址爬取及UI展示 淘宝国家省市区街道获取 参考 foxiswho 的 taobao-area-php 部分代码,改由c#重构. 引用如下: Autofac MediatR Swagger Han ...