预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第14章Java数据库编程接口主要内容14.1.1数据库概述
数据库是一个有组织的数据集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述。数据库管理系统(databasemanagementsystem,DBMS)以一种与数据库格式一致的方式,提供了存储和组织数据的机制。
当前最流行的数据库是关系型数据库,它是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库。数据库中的表按照行和列的形式来存储信息。行表示关系型数据库中的记录,列表示数据属性。
比较著名的关系数据库管理系统有Oracle、Sybase、DB2、MySQL、MicrosoftSQLServer、MicrosoftAccess等。14.1.2SQL14.1.3什么是JDBC14.1.4JDBC与ODBCODBC14.1.5ODBC数据源设置14.2通过JDBC访问数据库JDBC驱动程序类型14.2.2JDBCAPI1.DriverManager类SqlServer7.0/2000数据库2.Connection接口3.Statement类和接口4.ResultSet接口4.ResultSet类
有了SQL语句对象后,调用语句对象的方法executeQuery()执行SQL语句查询,并将查询结果存放在一个用ResultSet类声明的对象中。例如,以下代码读取学生成绩表存于rs对象中:
ResultSetrs=sql.executeQuery("SELECT*FROMksInfo");
ResultSet对象实际上是一个由查询结果数据构成的表,是一个管式数据集,由统一形式的数据行组成,一行对应一条查询记录。在ResultSet对象中隐含着一个游标,一次只能获得游标当前所指的数据行,用next方法可取下一个数据行。用数据行的字段(列)名称或位置索引(自1开始)调用形如getXXXX()方法获得记录的字段值。ResultSet对象的部分方法:
(1)bytegetByte(intcolumnIndex),返回指定字段的字节值。
(2)DategetDate(intcolumnIndex),返回指定字段的日期值。
(3)floatgetFloat(intcolumnIndex),返回指定字段的浮点值。
(4)intgetInt(intcolumnIndex),返回指定字段整数值。
(5)StringgetString(intcolumnIndex),返回指定字段的字符串值。
(6)doublegetDouble(StringcolumnName),返回指定字段的双精度值。
(7)longgetLong(StringcolumnName),返回指定字段的long型整值。
(8)booleannext(),返回是否还有下一字段。以上方法中的columnIndex是位置索引,用于指定字段,columnName是字段名。
用户需要在查询结果集上浏览,或前后移动、或显示结果集的指定记录,这称为可滚动结果集。程序要获得一个可滚动结果集,只要在获得SQL的语句对象时,增加指定结果集的两个参数即可。例如,以下代码所示:
Statementstmt=con.createStatement(type,concurrency);
ResultSetre=stmt.executeQuery(SQL语句);
语句对象stmt的SQL查询就能得到相应类型的结果集。
int型参数type决定可滚动集的滚动方式:
ResultSet.TYPE_FORWORD_ONLY,结果集的游标只能向下滚动。
ResultSet.TYPE_SCROLL_INSENSITIVE,游标可上下移动,当数据库变化时,当前结果集不变。
ResultSet.TYPE_SCROLL_SENSITIVE,游标可上下移动,当数据库变化时,当前结果集同步改变。
int型参数concurrency决定数据库是否与可滚动集同步更新:
ResultSet.CONCUR_READ_ONLY,不能用结果集更新数据库中的表。
ResultSet.CONCUR_UPDATETABLE,能用结果集更新数据库中的表。利用连接对象connect,创建Statement对象stmt,指定结果集可滚动,并以只读方式读数据库:
Stmt=connect.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
可滚动集上另外一些常用的方法如下:
booleanprevious(),将游标向上移动,当移到结果集第一行时,返回false。
voidbeforeFirst(),将游标移到结果集的第一行前。
voidafterLast(),将