服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

用jdbc连接数据库(1)


  用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扩展。

(未完待续)

扫描关注微信公众号