用JDBC连接数据库(1)
2008-01-05 09:38:23 来源:WEB开发网核心提示:用JDBC连接数据库(1) 所有的数据库的对象和方法都在java.sql.* 里面,所以首先要import java.sql.*,要想连接数据库,用JDBC连接数据库(1),首先要将驱动程序调入, Class.forName("sun.jdbc.odbc.JdbcOdbcDriver
用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
赞助商链接