10第十章数据库的读取插入删除与更新Word文档格式.docx

上传人:b****5 文档编号:18093527 上传时间:2022-12-13 格式:DOCX 页数:14 大小:27.09KB
下载 相关 举报
10第十章数据库的读取插入删除与更新Word文档格式.docx_第1页
第1页 / 共14页
10第十章数据库的读取插入删除与更新Word文档格式.docx_第2页
第2页 / 共14页
10第十章数据库的读取插入删除与更新Word文档格式.docx_第3页
第3页 / 共14页
10第十章数据库的读取插入删除与更新Word文档格式.docx_第4页
第4页 / 共14页
10第十章数据库的读取插入删除与更新Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

10第十章数据库的读取插入删除与更新Word文档格式.docx

《10第十章数据库的读取插入删除与更新Word文档格式.docx》由会员分享,可在线阅读,更多相关《10第十章数据库的读取插入删除与更新Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

10第十章数据库的读取插入删除与更新Word文档格式.docx

电话

101

小齐

1983/10/31

0010-55536

102

琳达

1973/3/14

0010-55534

103

安琪

1965/8/12

0010-55535

104

陶子

1988/11/20

0010-55576

第六条记录

105

包子

1981/6/9

0010-55512

106

饺子

1984/5/18

在ACCESS数据库中,这些数据组合成为一个“表”,数个性质相同的表组合一个数据库。

1-3何为关系型数据库(RDB)

个人数据库在使用及管理技术较为简单,但如果时一个包含许多数据库文件的大型数据库系统,则需要专业的管理技术,诸如:

如何快速找到全国各地的客户及订单数据?

如何确保输入数据的正确性?

如何避免不同地区的人员同时更改同一条信息?

如果建立数据库文件之间的关联性?

如何使各数据库可以兼容共享?

为了避免数据库或表内的字段一再重复,例如:

在“学生个人表”内已有学生个人数据,若在“学生成绩单表”又填入学生个人数据,将造成数据的重复。

因此,利用关系型数据库,我们可以在表之间使用一个字段(如学生的学号),把学生个人数据与成绩,操行成绩连接起来整合处理。

将两种以上性质不同的表,经过关联后,就可以当作一个整体的数据来处理,快速达到数据查询与整合的目的,此即所谓的“关系型数据库(RelationalDataBase)”。

以下便使我们用“学生管理系统”来说明数据库与表的关系,表之间以“学号”这个字段连接。

由上方3个表,我们可同时找到学号101同学的姓名,地址,连接,到2,3个表就可查到各科成绩,名次,功过记录,操行总分等,并将显示到同一张成绩单上。

1-4ASP与数据库

ASP是通过一组统称为ADO(ActiveXDataObjects)的对象模块来存取数据库,无论您采用的是Access,SQLServer,VisualFoxPro,Informix,Oracle,dBase或其他数据库,只要该数据库具有对应的ODBC或OLEDB驱动程序,ADO对象就能加以存取。

如图:

学生操行表

学好:

旷课:

1次

请假:

10次

大功:

没有

小功:

大过:

等级:

学生成绩表

语文:

89

英语:

90

数学:

91

计算机:

70

总分:

340

职业:

无业

学生个人表

学号:

姓名:

卜快乐

性别:

电话:

574514

地址:

盐城大庆路

家长:

郝郁闷,卜美丽

要知道系统安装了哪些ODBC或OLEDB驱动程序,Windows2000的用户可以打开“控制面板”,依序在“管理工具”,“ODBC数据源”上双击鼠标左键。

事实上,ASP提供的ADO对象模块包含了下列6个对象和3个集合,比较常用的则是Connection,Recordset,Command,Field等。

1-5建立Access数据库

虽然不同的系统可能安装不同的ODBC或OLEDB驱动程序,但只要您安装了IIS,系统上至少会由MicrosoftAccessDrive,MicrosoftODBCforOracle,SQLServer等ODBC驱动程序。

换句话说,你至少可以用Access,SQLServer,Oracle等3种最主流的数据库从事ASP网页数据库设计。

由于MicrosoftAccess2000属于Office2000家族,取得较为容易,且界面和Office家族相似,学习起来没有什么障碍!

步骤:

1.打开,新建空数据库。

2.保存到服务器路径。

3.创建一张表。

4.输入字段。

5.定义主键。

(可选)

6.输入信息。

1-6打开和关系数据库连接

在存取数据库之前,您必须使用ADO对象模块的Connection对象打开数据库连接。

格式:

Dimconn

Setconn=Server.CreateObject("

ADODB.Connection"

说明:

Connectiong对象主要的用途是打开与关闭数据库连接。

方法:

Close关闭数据库连接

Open打开一个数据库连接

Execute对表进行SQL查询

属性:

ConnectionString描述数据库的连接方式

数据库连接的完整代码:

(AccessOLEDB驱动程序)

dimconn

SetConn=Server.CreateObject("

Conn.ConnectionString="

Provider=Microsoft.Jet.OLEDB.4.0;

DataSource="

&

Server.MapPath("

数据库名.mdb"

Conn.Open

程序解释:

使用Server.CreateObject方法建立Connection对象实例,再指派给conn.

使用Connection对象的ConnectionSting属性设置数据库的连接方式,其中Provider=Microsoft.Jet.OLEDB.4.0;

表示采用OLEDB驱动方式进行连接。

而Server.MapPath("

)就是数据库的路径,最后使用方法Open打开数据库。

最后,打开数据库进行了一系列的操作,要关闭和销毁对象实例的。

conn.close关闭数据库连接

setconn=nothing释放Connection对象实例所占的空间。

1-7读取,插入,更新与删除表的记录

在您学会使用Connection对象打开数据库连接之后,接下来,您可以使用ADO对象模块提供的Recordset对象存取表的记录。

建立Recordset对象实例的方法如下:

Setrs=Server.CreateObject("

ADODB.Recordset"

Recordset对象

Recordset对象可以存取表的记录,包括读取,插入,删除或更新等。

AddNew插入记录,需再执行Update方法才能完成数据新增

Delete删除指针所指到的记录

Open取得Recordset对象,它可能包含表的所有记录或符合SQL查询的记录。

Update完成更新

MoveNext移到指针的下一条记录。

MovePrevious移到指针的上一条记录。

MoveFirst移到第一条记录。

MoveLast移到最后一条记录。

MoveNum移到对象种目前指针的下个Num条记录

AbsolutePosition目前指针的绝对位置,其值再1~RecordCount属性的值之间。

AbsolutePage当Recordset对象由设置分页时,AbsolutePage会返回目前的页码。

BOF若指针位于第一针记录前,返回True,否则返回False

EOF若指针位于最后一条记录之后,返回True,否则返回False

Filter筛选记录

MaxRecords可以返回的最多条记录数。

PageCount返回分页总数。

PageSize设置分页时,PageSize为每页的记录条数。

RecordCount返回记录条数

cursorType指针对象中的移动方向有四种参数值

设置值常数说明

0adOpenForwardOnly默认值,表示只能向下一条记录移动。

1adOpenKeyset指针可以自由上下移动,可看到更新记录,看不到新增和删除记录

2adOpenDynamic什么都可以看到,消耗资源多,而且Access不支持

3adOpenStatic自由移动指针,看不到新增和删除或更新,和数据库中断了。

LockType能否写入记录

设置值常数说明

1adLockReadOnly默认值,表示所有记录只读,不允许修改

2adLockPessimistic当开始编辑某条字段时,锁定记录,待编辑完后update更新,解锁

3adLockOptimistic调用update更新锁定记录,和2比起来有不同步的问题,但效率好

4adLockBatchOptimistic允许我们以批次的方式更改记录

CursorLocation设置记录存放的位置

2adUserServer表示记录存放在服务器上

3adUserClient表示记录被下载到浏览器端

1-8读取表的记录

第一个范例:

<

HTML>

<

BODY>

%

Dimconn

setconn=Server.CreateObject("

Conn.ConnectionString="

Provider=Microsoft.Jet.OLEDB.4.0;

&

"

DataSource="

friend.mdb"

Conn.Open

dimrs

setrs=Server.CreateObject("

rs.Open"

择友俱乐部"

conn,1,1

ifnotrs.eofThen

Response.Write"

编号:

rs("

编号"

)&

BR>

姓名"

性别"

年龄:

年龄"

星座:

星座"

身高:

身高"

else

到达数据库的结尾,无法显示记录。

endif

rs.Close

Setrs=Nothing

conn.Close

Setconn=Nothing

%>

/BODY>

/HTML>

首先程序代码意义就是使用Connection对象打开数据库连接,这个Access数据库名称为friend.mdb,它里面有一张“择友俱乐部”表,里面有25调记录。

其次建立一个Recordset对象实例,然后指派给变量rs.

在这里,我们来看一下Recordset的语法:

语法:

Rs.Open(Source,Connection,Connection,CursorType)

参数:

Source:

这个是Command对象或包含指定的字符串(择友俱乐部)

Connection:

用来打开数据库连接的Connection对象,(conn)

CursorType:

设置指针对象的移动方向,

(1),表示指针自由的上下移动。

LockType:

设置能否写入表,

(1)表示指针只读,不能写入。

指针:

1,1

所以对照语法,出来的格式为:

rs.open“择友俱乐部”,conn,1,1

再然后,我们读取记录,指针默认会放在第一针位置,如图:

BOF

第一列第二列第三列第四列

EOF

Rs.bof就是检测指针是否在第一条记录之前,也就是说检测是否有数据。

Rs.eof就是检测指针是否在第一条记录之后,同上。

若要移动指针的位置,必须使用Recordset对象的MoveNext(移动到下一条记录),或者MovePrevious(移动到上一条记录)或者MoveFirst(移动第一条记录),MoveLast(移动最后一条记录)或MoveNum(移动到下Num记录).

修改第一个范例:

(显示全部记录的方法)

在第一个范例我们用了IF语句进行了判断,然后输出了数据,因为IF本身不是循环,所以只能显示一条数据,也就是第一条数据。

我们如何显示全部数据,当然就是用循环语句了。

Dowhilenotrs.eof

……

rs.movenext

loop

首先我们用了当循环,判断了条件成立,输入第一行数据,然后,遇到了rs.movenext这个属性方法,它的用途就是将指针转移到下一个记录点上,然后循环再判断,知道下一行没有数据了,dowhilenotrs.eof判断为假的时候,才结束循环。

这样显示比较丑陋,如果做城表格的形式呢?

第二个范例:

Server.MapPath("

%>

tableborder="

1"

width=500align="

center"

>

tr>

td>

编号<

/td>

姓名<

性别<

年龄<

星座<

身高<

/tr>

%

dowhilenotrs.eof

%=rs("

)%>

/table>

这个就把数据库里的数据在网页上显示了。

1-9新增表的记录

Rs.AddNewFieldname,Value

再表新增一条记录,其字段名称为Fieldname,数据为Value,请注意,须再执行rs.update方法才能完成新增。

范例:

(部分代码)

3,3

conn,3,3

rs.addnew

)="

26"

李炎恢"

20~30"

男"

天蝎座"

175~180"

体重"

65~75"

职业"

老师"

rs.update

首先打开这个表的方式出现了改变,上一个例子中是只读,现在是写入,所以要要将rs.Open打开的方式改为3,3我们可以先记一个口诀:

1,1能读取,3,3可写入,

然后写入数据库也很明了:

rs.addnew….rs.update之间写入就可以了。

1-10如何读取字段名称及字段数目(提高)

我们知道,Recordset对象是以二维数组的形式存储表的记录。

事实上,Recordset对象的每一行都是属于Fields集合,而Fields集合的每一个项目都是一个Field对象。

第一列

第二列

Field对象(Fields(0))

Field对象(Fields

(1))

正因如此,所以我们能够利用Fields集合的Count属性读取表的字段数目,然后Fields对象的Name和Value属性分别读取字段名称,字段数据。

rs.Fields.Count返回字段个数

rs.Fields(i).name返回字段标题

rs.Fields(i).value返回字段的信息

范例:

程序略。

Fields集合是一个数组,而数组里面存放的各个元素都是一个Field的对象,因此我们取数据的时候需要用Count属性取得字段个数,然后用for循环。

要注意,rs.Fields.count返回的是字段的个数,我们这里有8个字段,所以返回数字8,但是因为数组是从0开始计算的,所以,如果要用循环的话,是0-7之间循环,因此最后就写成了forI=0tors.fields.count-1.

1-11使用Recordset对象的Sort属性来进行排序。

将Recordset对象进行排序的方法有两种,其有使用Recordset对象的Sort属性,其二就是使用SQL语句。

rs.sort=”语文”或rs.sort=”语文DESC”或rs.sort=”语文DESC,数学DESC”

1,1或者3,1推荐用3,1

(部分代码)

RS.CursorLocation=3‘设置记录被下载到浏览器端

成绩单"

conn,3,1‘使用3,1来排序

RS.Sort="

语文DESC"

‘最高到最底的方式排序

1-12使用Recordset对象的Filter属性来筛选记录

当我们使用Recordset对象的Open放大打开表时,所读取的将是整个表的所有记录,但有时我们会需要把筛选范围限制载符合某些条件的记录。

例如语文成绩在90分以上的学生的记录。

比较运算符:

=,<

>

<

=,>

=,!

=,<

rs.Filter=”语文>

90or数学>

90”

rs.Filter=”语文<

100and数学<

rs.Filter=”姓名=’宁夕’”

1-13如何设置分页浏览

当表包含很多记录而无法显示在同一页时,我们可以设置分页浏览,将记录分成数页显示,以“零件报价表”来演示。

!

--#includefile="

conn.asp"

-->

rs.open"

零件报价表"

rs.pagesize=10

fori=1Tors.pagecount

response.write"

ahref='

Pageing.asp?

Page="

i&

'

_

第"

页"

/A>

nbsp;

next

pageno=request("

page"

tableborder=1>

零件种类<

厂家<

规格<

价格<

报价日期<

ifpageno<

then

rs.absolutepage=pageno

Fori=1ToRS.PageSize

零件种类"

厂家"

规格"

价格"

报价日期"

rs.movenext

IfRS.EOFThenExitFor

Next

else

response.redirect"

pageing.asp?

page=1"

endif

close.asp"

首先,我们将数据库的打开和关闭用了两个文件存储为模块,简化了程序。

其次,我们来熟悉一下分页所需要的属性:

AbsolutePage当Recordset对

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1