Blog·Tanky WooABOUTRSS

Java数据库编程学习总结(2)

22 Dec 2011
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

上一篇:Java数据库编程学习总结(1)

上次有一些忘了总结,再看书时想起来了,先把上次的继续补充下。

在上一篇末有这一段代码:

ResultSet result = stat.getResultSet();
while(result.next())
{
    look at a row of the result set;
}

这里的ResultSet和Iterator类有些类似,不过稍有不同,对于ResultSet类,迭代器初始化时被设定在第一行之前的位置,必须调用next方法将它移动到第一行。

Result得到的结果可以循环读取每一行,对于每一行,可以通过getXXX()访问器方法得到每一列的信息。

比如第三列是String型,可以:

String wtq = result.getString(3);

每个Connection对象都可以创建一个或一个以上的Statement对象。同一个Statement对象可以用于多个不相干的命令和查询。但是,一个Statement对象最多只能打开一个结果集。如果需要执行多个查询操作,且需要同时分析查询结果,那么必须创建多个Statement对象。

当使用完ResultSet, Statement,Connection对象时,应该调用close方法。

关于JDBC使用的一般步骤,官方文档有说明:

  1. Connect to a data source, like a database

  2. Send queries and update statements to the database

  3. Retrieve and process the results received from the database in answer to your query

即:建立连接,查询语句,到使用结果集。

接下来插播几个官方讲解jdbc不错的链接:

http://docs.oracle.com/javase/tutorial/jdbc/overview/index.html (感谢网友xiaolong推荐)

http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html

http://en.wikipedia.org/wiki/JavaDatabaseConnectivity

以下是官方对Connection和Statement的定义:

Connection:http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/connection.html#996856

> > A `Connection` object represents a connection with a database. A connection session includes the SQL statements that are executed and the results that are returned over that connection. A single application can have one or more connections with a single database, or it can have connections with many different databases. > >

Statement:http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/statement.html#996854

> > A `Statement` object is used to send SQL statements to a database. > >

接下来总结一下元数据:

元数据:在SQL中,描述数据库或其组成部分的数据称为元数据。

我们可以获得三类元数据:

可以了解数据库的更多信息,可以从数据库中获得一个DatebaseMetaData对象。

DatebaseMetaData meta = conn.getMetaData();
ResultSet mrs = meta.getTables(nul, nul, nul, new String[] {"TABLE"});
while(mrs.next())
    tableNames.addItem(mrs.getString(3));

ResultSetMetaData则是用于提供结果集的相关信息。每当通过查询得到一个结果集,我们都可以获取该结果集的列数,每一列名称等相关信息。

ResultSetMetaData metaData = result.getMetaData();
int columnCount = metaData.getColumnCount();  // 获取TABLE的列数
// 获取TABLE的行数
// getRow是返回当前行数
result.last(); 
int rowCount = result.getRow();
result.beforeFirst();   //返回起始行

暂时总结完了,以后遇到更多再补充吧.

DATE:2011.12.22

By: Tanky Woo