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. cpp - 编译过程

    预处理 E:\CppSpace\hello>g++ -o main.i -E main.cpp E:\CppSpace\hello>dir /p 驱动器 E 中的卷是 固盘-项目 卷的序列 ...

  2. linux_RAID

    什么是RAID? 磁盘阵列,把多个磁盘组合成一个磁盘组,在逻辑上看起来就是一块大的磁盘,提供单个物理磁盘的存储量和更高的存储性能,同时提供不同级别的冗余备份的一种技术,不同的RAID技术对应不同级别 ...

  3. Django 模版中如何对主菜单进行选中?

    问题描叙: 在实际模版中,返回的页面我们想要主菜单保持一种状态,这个主菜单进去的子页面,都需要保持主菜单选择状态 例如 主菜单是 课程, 下面展现的章节和视频页面时候, 课程这个主菜单在展现这个菜单下 ...

  4. Python--socketserve源码分析(二)

    BaseServer::self.process_request(request, client_address) 实现原理: 在类的继承关系中,当子类中没有相应的方法时就会去父类中寻找, 当继承多个 ...

  5. Linux使用top与free命令查看CPU与内存使用情况

    top命令: 显示内容解释: 第一行top分别为:当前时间:系统运行天数:使用者个数:系统负载的平均值,后面的三个值分别为1分钟前.5分钟前.15分钟前进程的平均数,这个数值超过 CPU 数目时,说明 ...

  6. tomcat启动报错

    [toc]启动错误 does not exist or is not a readable directory 问题:tomcat启动报错:does not exist or is not a rea ...

  7. jQuery-niceScroll滚动条错位问题

    虽然niceScroll插件很好用,毕竟它不依赖css,只是单纯的js就可以设置出好看的滚动条了. 最近在项目中使用到niceScroll,而且在表格里有横滚动条,竖滚动条时很容易错位,就是滚动条会悬 ...

  8. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  9. js基本语法与变量

    1.//声明变量,js是弱类型语言,变量类型声明示没有意义的.变量类型是随时可以变化的.var a = 1;      a = "haha";    a = false;2.注释与 ...

  10. 同一台机器上多个tomcat启动造成的内存溢出问题的解决方法。

    加下面这句话就行了,我是WIN10+双tomcat+nginx(本地站点),无压力.在编译器的vm option里面加哦. -server -Xms512m -Xmx1024m -XX:PermSiz ...