| |
用jdbc连接数据库(1) 所有的数据库的对象和方法都在java.sql.* 里面,所以首先要import java.sql.*,要想连接数据库,首先要将驱动程序调入。 class.forname("sun.jdbc.odbc.jdbcodbcdriver");这是jdbc-odbc 的驱动程序。在jbuilder5.0例子里面有一个用datastore的例子,调用驱动程序是这样的:class.forname("com.borland.datastore.jdbc.datastoredriver");这个命令调入驱动程序并创建改类的一个实例。
要想连接一个指定的数据库,你必须创建connection类的一个实例。 string url = "jdbc:odbc:grocery prices"; connection con = drivermanager.getconnection(url); 注意你在此用到的数据库名称是你在odbc设置控制面板中输入的数据资源名。url语法对于不同类型的数据库会很不一样。 语法是这样的: jdbc:subprotocol:subname 开头都是jdbc,后面是子协议,上例是odbc,jbuilder5.0中的例子是这样的:jdbc:borland:dslocal:c:/jbuilder5/bin/temporary.jds 它用的是datastore 若你正连接一数据库其它机器上的服务器,你还需指定机器和子目录。 jdbc:bark//doggie/elliott 最后,你应指定一用户名和密码作为连接字符串的一部分。 jdbc:bark//doggie/elliot;uid=gooddog;pwd=woof
? 访问数据库(转载)
一旦与数据库相连,你可以按表的名称、列的名称和内容索取信息,也可以运行sql命令查询数据库、添加或修改数据库内容。可用来从数据库获取信息的对象有: databasemetadata 关于数据库的总体信息:表名、表索引、数据库产品名称和版本、数据库支持的操作。 resultset 表或一次查询结果的信息。对数据的访问是逐行的,但对列的访问可采取任何顺序。 resultsetmetadata 一个resultset中列名和类型的信息。
key lastname salarytype salarytype min max 1 adams 2 1 30000 45000 2 johnson 1 2 45000 60000 3 smyth 3 3 60000 75000 4 tully 1 5 wolff 2
salarytype列中的数据指向第二个表。其实还可以有许多类似的表,如所居住的州、各州的税收、 健康计划代扣款等。每个表都有一个主键列和一些其它的数据列。如何在数据库中创建表已被认为是一种艺术或科学。这些表的结构由它们的一般形式指定,一共有三种一般形式: 第一、第二、第三一般形式,它们的缩写分别为1nf、2nf、3nf。
1. 表中的每个单一只能有一个值(不能为一组值)。(1nf)
2. 除具有1nf的要求外,所有的非键列完全依赖于键列。也就是说主键和行中其它单元为一一 对应的关系。(2nf)
3. 除具有2nf的要求外,所有非键列间相互独立。也就是说没有能从其它数据列计算出来的值 的数据列。(3nf)
如今,几乎所有的数据库中的表都是第三一般形式(3nf)。这意味着会存在相当数量的表,而 每个表中的信息列会相对较少。
? 从数据库中获取数据
假设为了某些计划需求,我们要产生一个包含雇员以及他们工资范围的表。这个表在数据库中 并不直接存在,但可以通过对数据库发出一个查询来构造出来。我们有类似于以下这个表的一个表: :
name min max
adams $45,000.00 $60,000.00 johnson $30,000.00 $45,000.00 smyth $60,000.00 $75,000.00 tully $30,000.00 $45,000.00 wolff $45,000.00 $60,000.00
或许这个表已按工资的升序排列
name min max
tully $30,000.00 $45,000.00 johnson $30,000.00 $45,000.00 wolff $45,000.00 $60,000.00 adams $45,000.00 $60,000.00 smyth $60,000.00 $75,000.00
我们发现对包括这些表发出的查询会具有以下的格式
select distinctrow employees.name, salaryranges.min, salaryranges.max from employees inner join salaryranges on employees.salarykey = salaryranges.salarykey order by salaryranges.min;
这种语言被成为结构化查询语言或sql(常被读作“sequel”),而且几乎所有的数据库都支持该语言。 近些年来,已为sql指定了数个标准,绝大多数的pc数据库都支持这些ansi标准。sql-92被认为是 最基本的标准,并在随后有数次更新。但是,所有的数据库都不能很好的支持以后版本的sql,为了 利用独立于自己数据库的不同性能,它们都提供了不同类型的sql扩展。
(未完待续)
|
|