中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 数据库
用JDBC连接数据库(3)
作者:佚名 时间:2006-09-26 11:22 出处:天新网 责编:月夜寒箫
              摘要:用JDBC连接数据库(3)

用JDBC连接数据库(3)


编写访问数据库的JDBC代码


现在,我们准备研究一下如何编写访问数据库的Java程序。我们将要用到的数据库是名为

groceries.mdb的Microsoft Access数据库。数据库中包括的数据是三个本地蔬菜店的一些普通货物

的价格。食品表如下所示:



FoodKey

FoodName


1 Apples

2 Oranges

3 Hamburger

4 Butter

5 Milk

6 Cola

7 Green beans


存储表如下:


StoreKey

StoreName


1 Stop and Shop

2 Village Market

3 Waldbaum´s


蔬菜店价格表只包括以上表的键和价格:


FSKey

StoreKey

FoodKey

Price


1 1 1 $0.27

2 2 1 $0.29

3 3 1 $0.33

4 1 2> $0.36

5 2 2 $0.29

6 3 2 $0.47

7 1 3 $1.98

8 2 3 $2.45

9 3 3 $2.29

10 1 4 $2.39

11 2 4 $2.99

12 3 4 $3.29

13 1 5 $1.98

14 2 5 $1.79

15 3 5 $1.89

16 1 6 $2.65

17 2 6 $3.79

18 3 6 $2.99

19 1 7 $2.29

20 2 7 $2.19

21 3 7 $1.99


在ODBC上注册你的数据库


在Windows 95或NT下访问一个ODBC数据库之前,你必须在控制面板的ODBC驱动程序中注册这些数据

库。在Windows95下,使用控制面板中的ODBC图标;在Windows NT下,你会在开始菜单下找到它。(

如果没找到,你应按照在这之前所讲到的安装ODBC驱动程序WX1350.exe。)


双击ODBC图标并在图一所示的情况下点击Add按钮,然后选择一个数据库驱动程序(在这里使用

Microsoft Access)并点击OK。输入数据源名称(Grocery prices)和这个数据库的介绍(in local

stores)(这两个都与文件名无关),然后再选择数据库。当找到数据库,你的屏幕将如图二所示。按

OK键并关闭面板。




Figure 1: The ODBC control panel setup screen.




Figure 2: Selecting a database and description in the ODBC control panel.




与一个数据库相连


所有的数据库对象和方法都在java.sql包中,你必须import java.sql.*到任何使用JDBC的程序中。要想

连接一ODBC数据库,你必须首先将JDBC-ODBC bridge驱动程序调入。


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


这个命令调入驱动程序并创建该类的一个实例。然后,要想连接一个指定的数据库,你必须创建

Connection类的一个实例,再用URL语法指向数据库。


String url = "jdbc:odbc:Grocery prices";

Connection con = DriverManager.getConnection(url);


注意你在此用到的数据库名称是你在ODBC设置控制面板中输入的数据资源名。


URL语法对于不同类型的数据库会很不一样。


jdbc:subprotocol:subname


前面的几个字母代表连接协议并总是jdbc。或许还可能有子协议,这里的子协议被指定为odbc。它定义了对数

据库类的连接机制。若你正连接一数据库其它机器上的服务器,你还需指定机器和子目录。


jdbc:bark//doggie/elliott


最后,你应指定一用户名和密码作为连接字符串的一部分。


jdbc:bark//doggie/elliot;UID=GoodDog;PWD=woof


访问数据库


一旦与数据库相连,你可以按表的名称、列的名称和内容索取信息,也可以运行SQL命令查询数据库

、添加或修改数据库内容。可用来从数据库获取信息的对象有:


DatabaseMetaData 关于数据库的总体信息:表名、表索引、数据库产品名称

和版本、数据库支持的操作。

ResultSet 表或一次查询结果的信息。对数据的访问是逐行的,但对

列的访问可采取任何顺序。

ResultSetMetaData 一个ResultSet中列名和类型的信息。


每个对象都有大量的方法,使你能够获得数据库中元素的细节信息。另外还可以通过一些主要的方法

,来得到数据的最重要的信息。但如果你想了解更多的信息,我建议你去研究一下其它方法的介绍文

档。


The ResultSet


ResultSet是JDBC中最重要的单独对象。它是具有一般宽度和未知长度的表的一种抽象。几乎所有的

方法和查询所返回的数据都是ResultSet。一个ResultSet对象包含任意个命名的列。它还包含一个或

多个行,你可以从顶到底按次序在这些行间移动。在使用ResultSet对象之前,你应确认其中有多少

列,该信息保存在ResultSetMetaData对象中。


//get the number of columns from the metadata

ResultSetMetaData rsmd;

rsmd = results.getMetaData();

numCols = rsmd.getColumnCount();


当获得一ResultSet对象时,它指向第一行之前。你可用next()方法得到其它行,但当到结尾是,该

方法将返回false。既然从数据库中获取数据会导致错误的产生,你应把对结果的处理置于一个try

块中。


try

{

rsmd = results.getMetaData();

numCols = rsmd.getColumnCount();

boolean more = results.next();

while (more)

{

for (i = 1; i <= numCols; i++)

System.out.print(results.getString(i)+" ");

System.out.println();

more = results.next();

}

results.close();

}

catch(Exception e)

{System.out.println(e.getMessage());}


你可以用多种方式得到ResultSet中的数据,这要根据每列保存的数据类型而定。而且,你可按列号

或列名得到一列的内容。值得注意的是,列号起始于1,而不是0。ResultSet对象的其它更普通的方

法还有:


getInt(int);

以integer方式返回列号为int的列的内容。

getInt(String);

以integer方式返回列名为String的列的内容

getFloat(int);

以float方式返回列号为int的列的内容。

getFloat(String);

以float方式返回列名为String的列的内容。

getDate(int);

以date方式返回列号为int的列的内容。

getDate(String);

以date方式返回列名为String的列的内容。

next();

将行指针指向下一行。没有其它行时返回false。

close();

关闭result set。

getMetaData();

返回ResultSetMetaData对象。


ResultSetMetaData

ResultSetMetaData对象可从ResultSet中利用getMetaData()方法获得。通过该对象,你可以直到列

数和列的类型以及每列的名称。


getColumnCount();

返回ResultSet中列的数量。

getColumnName(int);

返回列号为int的列的名称。

getColumnLabel(int);

返回指定列的label。

isCurrency(int);

若该列包含货币单元的数值,则返回true。

isReadOnly(int);

若该列只读,则返回true。

isAutoIncrement(int);

若该列自动积增,则返回true。这种列多为键且总是

只读的。

getColumnType(int);

返回该列的SQL数据类型。这些数据类型包括:

BIGINT

BINARY

BIT

CHAR

DATE

DECIMAL

DOUBLE

FLOAT

INTEGERONGVARBINARY

LONGVARCHAR

NULL

NUMERIC

OTHER

REAL

SMALLINT

TIME

TIMESTAMP

TINYINT VARBINARY VARCHAR


DatabaseMetaData

通过DatabaseMetaData对象,可获得整个数据库的信息。它主要被用来数据库中各表的名称和表中

各列的名称。由于不同的数据库支持不同的SQL变量,所以它包括大量的用于查询该数据库支持什

么SQL方法的方法。 .


getCatalogs()

返回数据库中的信息目录的列表。利用JDBC-ODBC

Bridge驱动程序,你得到一列已注册到ODBC的数据库。

getTables(catalog, schema, tableNames, columnNames) 返回所有满足tableNames和columnNames的表的表名称

描述。

getColumns(catalog, schema, tableNames, columnNames) 返回所有满足tableNmaes和columnNames的列的列名称描述。

getURL();

返回正在连接的URL的名称。

getDriverName();

返回正在连接的数据库驱动程序的名称。


(全文完)

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有