JDBC中的主要类(接口)

在JDBC中常用的类有:

1、DriverManager

2、Connection

3、Statement

4、ResultSet

1、DriverManager

其实我们今后只需要会用DriverManager的getConnection( )方法即可:

1. Class.forName(“com.mysql.jdbc.Driver”);//注册驱动

2. String url = “jdbc:mysq  l://localhost:3306/mydb1”;

3. String username = “root”;

4. String password = “123”;

5. Connection con = DriverManager.getConnection(url, username,password);

注意,上面代码可能出现的两种异常:

1.  ClassNotFoundException:这个异常是在第1句上出现的,出现这个异常有两个可能:

没有给出mysql的jar包;

把类名称打错了,查看类名是不是com.mysql.jdbc.Driver。

2. SQLException:这个异常出现在第5句,出现这个异常就是三个参数的问题,往往username和password一般不是出错,所以需要认真查看url是否打错。

对于DriverManager.registerDriver()方法了解即可,因为我们今后注册驱动只会Class.forName(),而不会使用这个方法。

2、Connection

Connection最为重要的方法就是获取Statement:

Statement stmt = con.createStatement();

后面在学习ResultSet方法时,还要学习一下下面的方法:

Statement stmt = con.createStatement(int,int );


3、Statement

Statement最为重要的方法是:

(1) int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句,其实这个方法也可以执行create table、alter table,以及drop table等语句,但我们很少会使用JDBC来执行这些语句;

(2) ResultSetexecuteQuery(String sql):执行查询操作,执行查询操作会返回ResultSet,即结果集。

(3) booleanexecute ( )           (了解即可)

Statement还有一个boolean execute()方法,这个方法可以用来执行增、删、改、查所有SQL语句。

该方法返回的是boolean类型,表示SQL语句是否有结果集!。

如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数。

如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果。

4、ResultSet之滚动结果集(了解)

下一行:默认只能使用它,其他的方法存在,但不能使用!默认的结果集不可滚动!

上一行

下N行

上N行

到N行!

ResultSet表示结果集,它是一个二维的表格!ResultSet内部维护一个行光标(游标),ResultSet提供了一系列的方法来移动游标

void beforeFirst():把光标放到第一行的前面,这也是光标默认的位置;

void afterLast():把光标放到最后一行的后面;

boolean first():把光标放到第一行的位置上,返回值表示调控光标是否成功;

boolean last():把光标放到最后一行的位置上;

boolean isBeforeFirst():当前光标位置是否在第一行前面;

boolean isAfterLast():当前光标位置是否在最后一行的后面;

boolean isFirst():当前光标位置是否在第一行上;

boolean isLast():当前光标位置是否在最后一行上;

boolean previous():把光标向上挪一行;

boolean next():把光标向下挪一行;

boolean relative(int row):相对位移,当row为正数时,表示向下移动row行,为负数时表示向上移动row行;

boolean absolute(int row):绝对位移,把光标移动到指定的行上;

int getRow():返回当前光标所有行。

获取结果集元数据!

得到元数据:rs.getMetaData( ),返回值为ResultSetMetaData;

获取结果集列数:int getColumnCount( )

获取指定列的列名:String getColumnName(int colIndex)

结果集特性:当使用Connection的createStatement时,已经确定了Statement生成的结果集是什么特性。

是否可滚动、是否敏感、是否可更新

con.createSttement():生成的结果集:不滚动、不敏感、不可更新!

con.createStatement(int,int):

第一个参数:

l  ResultSet.TYPE_FORWARD_ONLY:不滚动结果集;

l  ResultSet.TYPE_SCROLL_INSENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;

l  ResultSet.TYPE_SCROLL_SENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;

第二个参数:

CONCUR_READ_ONLY:结果集是只读的,不能通过修改结果集而反向影响数据库;

l  CONCUR_UPDATABLE:结果集是可更新的,对结果集的更新可以反向影响数据库。

上面方法分为两类,一类用来判断游标位置的,另一类是用来移动游标的。

如果结果集是不可滚动的,那么只能使用next()方法来移动游标,而beforeFirst()、afterLast()、first()、last()、previous()、relative()方法都不能使用!!!

结果集是否支持滚动,要从Connection类的createStatement()方法说起。也就是说创建的Statement决定了使用Statement创建的ResultSet是否支持滚动。

StatementcreateStatement(int resultSetType, int resultSetConcurrency)

resultSetType的可选值:

ResultSet.TYPE_FORWARD_ONLY:不滚动结果集;

ResultSet.TYPE_SCROLL_INSENSITIVE:滚动结果集,但结果集数据不会再跟随数据库而变化;

ResultSet.TYPE_SCROLL_SENSITIVE :滚动结果集,但结果集数据不会再跟随数据库而变化;

可以看出,如果想使用滚动的结果集,我们应该选择TYPE_SCROLL_INSENSITIVE!其实很少有数据库驱动会支持TYPE_SCROLL_SENSITIVE的特性!通常我们也不需要查询到的结果集再受到数据库变化的影响。

resultSetConcurrency的可选值:

CONCUR_READ_ONLY:结果集是只读的,不能通过修改结果集而反向影响数据库;

CONCUR_UPDATABLE:结果集是可更新的,对结果集的更新可以反向影响数据库。

通常可更新结果集这一“高级特性”我们也是不需要的!

获取滚动结果集的代码如下:

Connection con= …

Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,CONCUR_READ_ONLY);

String sql = …//查询语句

ResultSet rs =stmt.executeQuery(sql);//这个结果集是可滚动的

5、ResultSet之获取列数据

可以通过next()方法使ResultSet的游标向下移动,当游标移动到你需要的行时,就需要来获取该行的数据了,ResultSet提供了一系列的获取列数据的方法:

String getString(int columnIndex):获取指定列的String类型数据;

int getInt(int columnIndex):获取指定列的int类型数据;

double getDouble(int columnIndex):获取指定列的double类型数据;

boolean getBoolean(int columnIndex):获取指定列的boolean类型数据;

Object getObject(int columnIndex):获取指定列的Object类型的数据。

上面方法中,参数columnIndex表示列的索引,列索引从1开始,而不是0,这第一点与数组不同。如果你清楚当前列的数据类型,那么可以使用getInt()之类的方法来获取,如果你不清楚列的类型,那么你应该使用getObject()方法来获取。

ResultSet还提供了一套通过列名称来获取列数据的方法:

String getString(String columnName):获取名称为columnName的列的String数据;

int getInt(String columnName):获取名称为columnName的列的int数据;

double getDouble(String columnName):获取名称为columnName的列的double数据;

boolean getBoolean(String columnName):获取名称为columnName的列的boolean数据;

Object getObject(String columnName):获取名称为columnName的列的Object数据;

关于JDBC的使用详解请查看      JDBC操作详解

JDBC中常用对象介绍的更多相关文章

  1. BOM模型中常用对象 定义计数器 网页跳转 网页前进后退

    今天上午学了的BOM模型中常用对象,了解了一部分的属性 For循环的规律 外层循环控制行 内层循环控制列 <!doctype html> <html> <head> ...

  2. JDBC中常用的类和接口

    <零基础学Java> JDBC中常用的类和接口 利用JDBC的这些类和接口可以更方便地访问并处理存储在数据库中的数据. DriverManager类 DriverManager类 是JDB ...

  3. JDBC中常用的接口

    JDBC常用的接口DriverManager 驱动管理器获得数据库链接 Connection 数据库链接接口 Statement 语句接口,用来静态操作SQL语句 PreparedStatement ...

  4. day18-事务与连接池 3.jdbc中事务操作介绍

    那么我们都是通过程序操作数据库.所以要了解jdbc下怎样对事务操作.jdbc如何操作事务? 自动事务false那就不开了呗相当于开启事务. package cn.itcast.transaction; ...

  5. JavaScript常用对象介绍

    目录 对象(object) 对象的创建方式 点语法 括号表示法 内置对象 Array 数组创建方式 检测数组 转换方法 分割字符串 栈方法 队列方法 重排序方法 操作方法 位置方法 迭代方法 Stri ...

  6. Python操作Word:常用对象介绍

    前面已经介绍过了试用win32com类库来进行Word开发,系列文章<Python操作Word>是继承了前面的文章,所以,你应该先查看前面的文章,其实只有两篇,文章地址列在最下面的参考资料 ...

  7. iOS开发之网络编程--1、AFNetwork 3.x 的所有开发中常用基础介绍

    前言:第三方网络请求框架中AFNetwork 3.x收欢迎程度相当高的: 由于iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载 ...

  8. C#中常用接口介绍

    1. IComparable接口 IComparable接口定义通用的比较方法.由类型使用的IComparable接口提供了一种比较多个对象的标准方式.如果一个类要实现与其它对象的比较, 则必须实现I ...

  9. Web中常用字体介绍(转)

    1.在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的@font-face属性来引入特殊的浏览器加载字体. 浏览器中展示网页文字内容时,文字字体都会按照设计 ...

随机推荐

  1. 逆向学习-Windows消息钩取

    钩子 Hook,就是钩子.偷看或截取信息时所用的手段或工具. 消息钩子 常规Windows流: 1.发生键盘输入事件时,WM_KEYDOWN消息被添加到[OS message queue]. 2.OS ...

  2. USACO The Lazy Cow

    题目描述 这是一个炎热的夏天,奶牛贝茜感觉到相当的疲倦而且她也特别懒惰.她要在她的领域中找到一个合适的位置吃草,让她能吃到尽可能多的美味草并且尽量只在很短的距离.奶牛贝茜居住的领域是一个 N×N 的矩 ...

  3. AI简单平移追踪算法

    1.比较坐标追踪法 追踪者会不停地比较自身和目标的x坐标和y坐标,每x和y上一个单位的移动为一个周期,该算法虽然简单好用,但实用性差且不智能化,如果追踪者数量增加,路线会显得单调,由于都是先走个对角线 ...

  4. xilinx DMA IP核(一) —— loop测试 代码注释

    本篇笔记中的代码来自:米联科技的教程“第三季第一篇的DMA_LOOP环路测试” 硬件的连接如下图所示: 图:DMA Loop Block Design 橘色的线就是DMA加FIFO组成的一个LOOP循 ...

  5. orcale 之pl/sql例外

    orcale 中的例外我们可以看作是其他编程语言中的异常,是为了增强语言的健壮性和容错性. 在orcale中常见的有以下几种: No_data_found 很容易理解就是没有数据返回. Too_man ...

  6. 配置MySQL接受远程登录连接

    一 开放mysql mysql的配置文件在/etc/mysql/my.cnf文件内,里面有一行bind-address = 127.0.0.1表示只允许本地访问,将这行注释即可 # bind-addr ...

  7. 10 阻塞队列 & 生产者-消费者模式

    原文:http://www.cnblogs.com/dolphin0520/p/3932906.html 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue.LinkedList(Li ...

  8. Calendar介绍

    java.util.Calendar是一个抽象类,它定义了日历相关的一系列操作,使用java.util.Calendar除了可以表示日期和时间,还可以用它来对时期或时间进行算术运算,比如获取当前日期1 ...

  9. 举一反三 willDisplayCell在UICollectionView中的一些应用

    一.UICollectionViewCell动画 上一篇博客写仿58同城实现UITableViewCell动画,同样UiCollectionView中也能用,上一个是从右到左的动画还比较好弄, 但如果 ...

  10. [转]Repeat Page Header on each Page for reports SSRS

    本文转自:https://stackoverflow.com/questions/3475144/i-want-to-repeat-page-header-on-each-page-for-repor ...