JDBC 快速入门
来源:互联网 发布:c语言二分法解方程 编辑:程序博客网 时间:2024/06/04 23:30
1年多没碰JDBC了,原来就没怎么学,现在稍微系统的复习以下:
JDBC的架构:
此图是O'Reilly的书摘里面您的,还是2.0时代的东西,我主要参考官方文档里面的内容,JDBC现在3.0
JDBC的介绍是这样的:
The Java Database Connectivity (JDBC) API provides universal data access from the Java programming language. Using the JDBC 3.0 API, you can access virtually any data source, from relational databases to spreadsheets and flat files. JDBC technology also provides a common base on which tools and alternate interfaces can be built.
JDBC API提供一种从Java的通用型/泛用型数据访问方法.使用JDBC3.0的API你可以访问任何数据源,从关系型数据库到电子表格到普通的文件.JDBC也提供了其他工具和接口构建的共同基础.
JDBC主要在两个包里面:
- java.sql
- javax.sql
后者附带了服务器端的一些功能
JDBC的链接过程
典型的过程是加载驱动->建立连接
JDBC通常有两种方式:
- DriverManager:这种是直接和数据库链接
- DataSource:这种通过数据库连接池来连接的,这个池的概念比较不错.而且,通常当你不用的时候,链接是返回到池里面的,并不会断开连接,这样的频繁的访问的情况下,就不要花费大连的时间来建立和断开连接了.
结果集的处理:
ResultSet接口提供了获取和操作执行结果的方法。ResultSet通过两个设置来决定它的机能,一个是游标的可操作方法,另外一个ResultSet的改变是如何影响到底层的数据源的。
有三种不同的ResultSet类型:
TYPE_FORWARD_ONLY
,这个类型游标只能往前移动TYPE_SCROLL_INSENSITIVE
,游标可以前后移,还可以跳到一个绝对位置- YPE_SCROLL_SENSITIVE,同上,不知道是不是有错
ResultSet中控制游标:
next():向后移动一行,当在一行中时返回true,当在最后一行之后返回false
previous()
:向前一行,同理当在第一行之前返回falsefirst()
- 移动到ResultSet的第一行,当为空是返回falselast()
- 同理beforeFirst()
- 移到第一行之前,当为空时此方法没有作用afterLast()
- 同理relative(int rows)
- 跳到相对当前行的位置,relative(-3),从现在往前倒3行,比如现在是第四行,往前倒到第一行absolute(int row)
- 跳到第row行,当为负数是从最后一行开始数起,比如有500行,absolute(-4)就是第497行
获得数据:
每个字段的数据都可以用getXXX方法获得,不过指导里面说应该从左往右读,而且每个仅读一次,而且最好用字段索引(从1开始i),因为字段名可以相同,此时只会获得第一个对应的字段。
注意getINT可以用来读INTEGER,BINARY
, VARBINARY
, LONGVARBINARY
, DATE
, TIME
, or TIMESTAMP
.
更新数据:
update需要两步:先更新字段,之后在应用到对应的行,此时才会写入到底层的数据源
插入和删除
一般来说,既然都用Java写了,绝大多数情况下也无须去写sql来插入删除。所以JDBC可以直接做到这一点。实际上,当你获得了一个ResultSet的时候。就可以插入和删除了。在每个ResultSet里面有一个特别的行叫插入行,你可以把游标移动到这里来猛插数据。。。
预编译语句:
如果你常用一个语句的话,可以用预编译语句来优化它。这样使得送出的查询无须翻译,直接可以执行。
使用Transactions:
不知道正规的名称是不是叫事务,反正一个Transactions 就是一组语句,要么都跑完,要么都不跑。
默认,建立一个连接的时候它是在auto-commit模式下的,也就是自动提交模式,这个时候每个语句被当成一个事务,并且一执行完就自动提交。
此外,还可以设置一个回滚保存点:
一般来说,要rollback通常还是在一个transcations里面遇到了SQLException的时候。
附加:使用批量更新batch updates
一条一条update效率不比一次发送很多条update语句高(其实也可以是delete和insert),所以有了这个batch update
- JDBC之一:JDBC快速入门
- JDBC之一:JDBC快速入门
- JDBC快速入门
- JDBC 快速入门
- JDBC快速入门
- JDBC快速入门
- JDBC之一:快速入门
- JDBC快速入门
- JDBC快速入门
- [置顶]JDBC快速入门
- JDBC新手快速入门
- JDBC之一:快速入门
- 高效JDBC编程工具JadePool快速入门
- 一个简单程序快速入门JDBC
- Hibernate基础:快速入门(2):JDBC方式访问数据库
- Spring学习-23:Spring中的JDBC Template(JDBC模板)快速入门
- JDBC 入门
- JDBC 入门
- 移动资源
- JDA收购i2 -- 来自商业评论
- Hibernate---缓存机制
- java中内存分配
- linux 关机/重启命令
- JDBC 快速入门
- datatable 转为xml 方法
- 静态链接库和动态链接库(转)
- putchar和putch有什么区别
- Perl正则表达式(Regular Expression, regex)
- 避免不必要的使用被检查异常
- 尽量使用标准的异常
- shellabout
- SQL语句查询某字段重复值