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,可以 ...
随机推荐
- 【开发技术】web.xml vs struts.xml
web.xml用来配置servlet,监听器(Listener),过滤器(filter),还有404错误跳转页面,500,等还配置欢迎页面等,总之一句话,就是系统总配置方案写在web.xml中 str ...
- Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域
Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域 ======================== 蕃薯耀 2018年1月29日 http://www.cnblogs. ...
- jsp里的逻辑语句c:if和c:choose
1.c:if <c:if test=""></c:if> c:when的test里可以是变量或者是一个EL表达式,其结果应该是true或者false. EL ...
- properties文件中中文不能显示或者中文乱码
1.properties 文件中文乱码问题 鼠标“右击”文件 => Resource => Text file encoding => UTF-8 2.properties 文件解析 ...
- 数据结构 哈希表(Hash Table)_哈希概述
哈希表支持一种最有效的检索方法:散列. 从根来上说,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素. 哈希表的主要思想是通过一个哈希函数,在所有可能的键与槽位之间建立一张映射表.哈希 ...
- Python程序的执行方式
Python代码有两种执行方式: 一.文件执行 二.交互器执行(推荐) 一.文件执行 1.用 notepad++ 或 Sublime Text,甚至 写字本创建一个文件. 2.比如:print('He ...
- JDK自带的缓存--包装类的缓存
关于包装类和基本类型的文章我前面已经整理过了,这里大致罗列下重点.我们主要是想研究下包装类的缓存. 1,自动装箱和自动拆箱 java1.5之后就提供了自动装箱和自动拆箱的功能,当然我们也可以手动来装箱 ...
- 【转】awk用法介绍
1. 介绍 Awk是由Aho.Weinberger和Kernighan三位科学家开发的,特别擅长文本处理的linux 工具,该工具是 linux 下最常用的工具之一.Awk不是普通的工具,其实,也是一 ...
- OSSEC初探
OSSEC初探 概念: OSSEC是一款开源的基于主机的入侵检测系统(HIDS),它可以执行日志分析.完整性检验.windows注册表监控.隐匿性检测和实时告警.它可以运行在各种不同的操作系统上,包括 ...
- tensorflow Image 解码函数
觉得有用的话,欢迎一起讨论相互学习~Follow Me tf.image.decode_png(contents, channels=None, name=None) Decode a PNG-enc ...