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 |
从统计数据可以看出,不同的连接字符串的处理时间不一致。
JDBC 基础的更多相关文章
- jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用
一.连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数 ...
- jdbc基础 (四) 批处理
批处理,就是字面上的意思,一次性处理一批sql语句. 直接看例子吧: package com.cream.ice.jdbc; import java.sql.Connection; import ja ...
- jdbc基础 (三) 大文本、二进制数据处理
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...
- jdbc基础 (二) 通过properties配置文件连接数据库
csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库 上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接 ...
- JDBC基础教程
本文实例讲述了JDBC基础知识与技巧.分享给大家供大家参考.具体分析如下: 1.什么是JDBC? 通俗来讲JDBC技术就是通过java程序来发送SQL语句到数据库,数据库收到SQL语句后执行,把结果返 ...
- Java 中 JDBC 基础配置
Java 中 JDBC 基础配置 <resource auth="Container" driverclassname="oracle.jdbc.driver.Or ...
- Unit01: JDBC原理 、 JDBC基础编程
Unit01: JDBC原理 . JDBC基础编程 这个文件里面有两块内容: 1.用比较麻烦的方式连接数据库,test1(),test4() 2.创建DBTool,测试DBTool连接数据库 ,tes ...
- Java应用程序连接数据库--JDBC基础
Java应用程序连接数据库--JDBC基础 Java应用程序连接数据库–JDBC基础 <!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency&g ...
- JDBC基础教程:tutorialspoint-jdbc
来自turorialspoint的JDBC基础教程(英文),官网:https://www.tutorialspoint.com/jdbc/index.htm 这个教程在国内已经被翻译成中文(不过是属于 ...
- JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务
JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...
随机推荐
- mysql 查询今天,昨天,上个月sql语句 注解
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ...
- Hystrix-request collapsing(请求合并)
介绍: Hystrix的请求合并就是把重复的请求批量的用一个HystrixCommand命令去执行,以减少通信消耗和线程数的占用.Hystrix的请求合并用到了HystrixCollapser这个抽象 ...
- python_如何修改装饰器中参数?
案例: 为分析程序内哪些函数执行时间开销较大,我们需定义一个带timeout参数的装饰器 需求: 统计被装饰函数的运行时间 时间大于timeout时,将此次函数调用记录到log日志中 运行时可以修改t ...
- 关于word图片显示不全
问题:在编辑word时,在其中一行插入一张图片,但是显示不全. 原因:给文字行距设置成 [ 固定值 ]的原因. 解决方案:先删除图片,在插入图片的一行右键--> 段落,弹出对话框,找到设置行距的 ...
- zookeeper 实现分布式锁
主要是依赖临时节点的特性.数据存储到内存中效率高:例如有web1 web2 两台应用服务器 db1 db2两台db服务器 db互为主备,web1 web2 分别去修改db1 .有限db2库里张三的年 ...
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9 归一化Normaliation 训练神经网络,其中一个加速训练的方法就是归一化输入(normalize inputs). 假设我们有一个 ...
- 浅谈PHP异常处理
1.PHP中异常的独特性 PHP中的异常的独特性,即PHP中的异常不同于主流语言C++.java中的异常.在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了 ...
- Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug
Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug,我是直接下载Archive文件安装的,非Composer方式安装 Yii 框架之前是支持在Url中包含大写字母的 最新的Yii 2 ...
- 安装Mercurial进行版本管理
mercurial是又一个去中心化的版本管理软件,类似git 先介绍如何安装mercurial yum -y install mercurial mercurial需要一个用户名来记录commit动作 ...
- 夏令营讲课内容整理 Day 3.
本日主要内容是树与图. 1.树 树的性质 树的遍历 树的LCA 树上前缀和 树的基本性质: 对于一棵有n个节点的树,必定有n-1条边.任意两个点之间的路径是唯一确定的. 回到题目上,如果题 ...