数据库编程
一、关系数据库简介
1.关系数据库模型
关系模型由Codd提出,它是考虑数据和数据间关系而得到的数据逻辑模型
一个关系型数据库通常由一个或多个表格的对象组成,数据库中的所有数据都被保存在这些表中。
数据库中的每一个表都有表名,都由行和列组成,其中每一列包括了该列名称、数据类型以及列的其他属性等信息(个人感觉——如果直接接触过Acess并有过亲自在其中一步一步建表的红历,就对这一点有更独特而深刻的体会);而行则具体包含某一列的记录或数据
2 数据库语言
一种是定义数据库对象的数据定义语言(Data
Definition Language,DDL);
另一种是定义数据对象处理的数据操纵语言(Data Manipulation
Language,DML)。
流行的查询语言SQL语言就提供了这两种子语言DDL和DML
3
建立数据库例子
工程略(多看源代码、工程文档)
二、结构化查询语言SQL
1.创建表格
create table
tablename
(column1 datatype
[constraint],
column2
datatype
[constraint],
column3 datatype [constraint]);
例
create table
employee
(firstname
varchar(15),
lastname varchar(20),
age int,
address
varchar(30),
city varchar(20));
2
删除数据库表格——注意,这里不要胡记成"delete",那么,为什么delete不用呢,原来,其被用到了删除数据
drop table tablename
例
drop table
employee;
3 数据查询
select column1 [, column2,etc] from
tablename
[where
condition];
[order by
counmn1[ASC|DESC] [,order by
column2[ASC|DESC]]]
例如:
1)select * from
employee;
2)select firstname,lastname
from employee;
3)select
firstname,lastname from employee where age>30;
4 向表中插入数据
insert into
tablename
(first_column,...last_column)
values (first_value,...last_value);
例如:
insert into
employee
(firstname, lastname, age,
address, city)
values (‘Wu’, ‘Jun’, 20,
‘No.11 Beijing Road’, ‘Wuhan’);
5
更新数据
update
tablename
set columnname = newvalue [,
nextcolumn = newvalue2...]
where
columnname OPERATOR value [and|or column OPERATOR
value];
例如:
update
employee
set age =
age+10
where firstname= ‘Li’and
lastname= ‘Ming’;
6
删除数据
delete from
tablename
where columnname OPERATOR
value [and|or column OPERATOR value];
例如:
delete from
employee
where firstname=‘Wu’ and
lastname = ‘Jun’;
三、Java数据库连接
JDBC简介
JDBC是Java DataBase
Connection的简称,是一种用Java实现的数据库接口技术
JDBC由两层组成。
上面一层是JDBC
API,负责与Java应用程序通信,向Java应用程序提供数据(Java应用程序通过JDBC中提供的相关类来管理JDBC的驱动程序)。
下面一层是JDBC Driver API,主要负责和具体数据环境的连接
如下图显示:
1.利用JDBC Driver API访问数据库的不同方式
1)使用JDBC-ODBC桥实现JDBC到ODBC的转化,转化后就可以使用ODBC的数据库专用驱动程序与某个特定的数据库相连
2)法使JDBC与某数据库系统专用的驱动程序相连,然后直接连入远端的数据库
3)使用JDBC与一种通用的数据库协议驱动程序相连,然后再利用中间件和协议解释器将这个协议驱动程序与某种具体的数据库系统相连
2.用JDBC连接数据库
1).建立数据源
加载Java应用程序所用的数据库的驱动程序。在这里你可以选择前面讲的三种方法中的一种。
2).建立连接
与数据库建立连接的标准方法是调用方法:
Drivermanger.getConnection(String url,String user,String
password)。
Drivermanger类用于处理驱动程序的调入,并且对新的数据库连接提供支持
3).执行SQL语句
见例11。1(要求首先建立数据库)
这里,我采用Access数据库,只是练练手,如下:
然后,在数据源(ODBC)将数据源建立起来,如图:
- import java.sql.*;
- class JDBCTest{
- public static void main(String args[]){
- String url="jdbc:odbc:employee";
- String user="sa";
- String password="sa";
- String ls_1="select * from employee";//"select firstname from employee";
- try{
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序 ,其实JDBC驱动程序有四种
- Connection con=DriverManager.getConnection(url,user,password);//建立连接
- Statement stmt=con.createStatement();//执行SQL
- ResultSet result=stmt.executeQuery(ls_1);
- System.out.print("编号 ");
- System.out.print("password ");
- System.out.print("lastname ");
- System.out.print("firstname ");
- System.out.print("age ");
- System.out.print("address ");
- System.out.print("city ");
- while(result.next()){
- System.out.print(result.getInt(1)+" | ");
- System.out.print(result.getString(2)+" | ");
- System.out.print(result.getString(3)+" | ");
- System.out.print(result.getString(4)+" | ");
- System.out.print(result.getString(5)+" | ");
- System.out.print(result.getString(6)+" | ");
- System.out.println(result.getString(7)+" | ");
- }
- result.close();
- stmt.close();
- con.close();
- }catch(SQLException sqle){
- System.out.println(1+sqle.toString());
- }
- catch(Exception e){
- System.out.println(2+e.toString());
- }
- }
- }
这里,JDBC驱动程序的四种说明可参考http://www.03964.com/read/0c1bc6760ff9f3b9d36003f1.html
上述程序执行结果为:
其中,开始编译错误正是因为采用了
- "select firstname from employee";这个语句,与表中要输出的不一一对应所致!
JDBC编程:
1
DriverManager
DriverManager 类是 JDBC 的管理层,作用于用户和驱动程序之间。它在数据库和相应驱动程序之间建立连接
DriverManager 类包含一列 Driver 类,它们已通过调用方法DriverManager.registerDriver对自己进行了注册
例:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:company";
Connection
con=
DriverManager.getConnection(url, "userID", "passwd");
2.Statement
Statement 对象用于将 SQL 语句发送到数据库中
例:
Connection con = DriverManager.getConnection(url,"userID","passwd");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
3.ResultSet
ResultSet 包含符合 SQL 语句中条件的所有行,
它通过一套 get 方法提供了对这些行中数据的访问
ResultSet.next 方法用于移动到 ResultSet 中的下一行,使下一行成为当前行。
java.sql.Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employee");
while(rs.next()){
//打印数据库中的数据
System.out.print(rs.getString(1)+" |
");
System.out.print(rs.getString(2)+" |
");
System.out.print(rs.getInt(3)+" |
");
System.out.print(rs.getString(4)+" |
");
System.out.println(rs.getString(5));
}