ASP基础入门:数据库查询语言(1)

ASP基础入门:数据库查询语言(1),第1张

原定计划从本篇开始就要给大家介绍 ASP 内建的 ActiveX

组件 但是考虑到我们在往后的学习中将会接触到大量的数据库查询 因此作者临时决定花一到两篇的篇幅向大家简要介绍一些数据库查询语言的基本知识 这其实也是学习

ASP

所必须掌握的一门知识 是否能够灵活地运用数据库查询语言 将直接关系到

ASP 程序的执行效率等一系列问题 所以请各位务必重视

相信很多朋友都听说过 SQL

这个名字 如果你是计算机方面的行家 SQL

的大名一定是如雷贯耳 那么 SQL 究竟是什么呢SQL 一词实际上是

"Structured Query Language"

结构式查询语言的缩写 是用于对存放在计算机数据库中的数据进行组织 管理和检索的一种工具;是一种特定类型的数据库

关系数据库 而控制这种数据库的计算机程序就是我们常说的

DBMS 数据库管理系统 譬如 SQL Server Oracle Sybase DB

等等 当用户想要检索数据库中的数据时 就通过 SQL

语言发出请求 接着 DBMS 对该 SQL

请求进行处理并检索所要求的数据 最后将其返回给用户 此过程被称作为数据库查询 这也就是数据库查询语言这一名称的由来

SQL 并不是象 C COBOL 和 Fortran 语言那样的完整的计算机语言 SQL

没有用于条件测试的 IF 语句 也没有用于程序分支的 Goto

语句以及循环语句 For 或 Do 确切的讲 SQL 是一种数据库子语言 SQL

语句可以被嵌入到另一种语言中 从而使其具有数据库存取功能 SQL

也非严格的结构式语言 它的句法更接近英语语句 因此易于理解 大多数

SQL 语句都是直述其意 读起来就象自然语言一样明了 SQL

还是一种交互式查询语言 允许用户直接查询存储数据 利用这一交互特性 用户可以在很短的时间内回答相当复杂的问题 而同样问题若让程序员编写相应的报表程序则可能要用几个星期甚至更长时间

在大部分 ASP 应用程序中我们都会接触到数据库 而我们在编写

ASP 应用程序时用来进行数据库 *** 作的标准语法正是 SQL 因此 SQL

语法的重要性是不言而喻的 下面 我们就从最常用的 SQL 语句 SELECT

着手 一步一步地来学习 SQL

查询是 SQL 语言的核心 而用于表达 SQL 查询的 SELECT

语句则是功能最强也是最为复杂的 SQL

语句 它从数据库中检索数据 并将查询结果提供给用户 在本文中我们将建立一个名为

tianjiao 的简单数据库 该库中存放了一个叫 sales

的销售记录表 如下所示 :

姓名

性别

工资

销售目标

销售额

地区

书生

上海

吴冠军

北京

雷鸣

四川

雪儿

广州

顾一

大连

阿卓

天津

熠天

全国

在该表中有六列即六个字段 :

姓名 性别 工资 销售目标 销售额 地区 首先我们用 Select

语句列出姓名 销售目标和销售额 :

Select 姓名 销售目标 销售额 From sales

结果如下 :

姓名

销售目标

销售额

书生

吴冠军

雷鸣

雪儿

顾一

阿卓

熠天

然后 我们再列出所有男性的姓名 销售目标和销售额 :

Select 姓名 销售目标 销售额 From sales Where 性别 =" 男

"

结果如下 :

姓名

销售目标

销售额

书生

吴冠军

雷鸣

顾一

熠天

接下来 我们做一个相对复杂的查询 列出销售额大于销售目标的所有男性的姓名 销售目标和销售额 并且按销售目标排序

Select 姓名 销售目标 销售额

Form sales

Where 销售额 > 销售目标

And 性别 =" 男 "

Order By 销售目标

结果如下 :

姓名

销售目标

销售额

书生

雷鸣

顾一

熠天

大家可以看到 对于简单查询 SQL Select

语句和英文语法很相象 我们来分析一下 SELECT

语句的完整格式 它包括六个子句 其中 SELECT 和FROM

子句是必须的 其它子句可以任选 每个子句的功能如下 :

Select 子句列出所有要求 SELECT 语句检索的数据项 它放在

SELECT

语句开始处 指定此查询要检索的数据项 这些数据项通常用选择表表示 即一组用“ ”隔开的选择项 按照从左到右的顺序 每个选择项产生的一个列的查询结果 一个选择项可能是以下项目

( ) 列名 标识 FROM

子句指定表中的列 如果列名作为选择项 则 SQL

直接从数据库表中每行取出该列的值 再将其放在查询结果的相应行中

( ) 常数 指定在查询结果的每行中都放上该值

( ) SQL

表达式 说明必须将要放入查询结果中的值按表达式的规定进行计算

From 子句列出包含所要查询数据的表 它由关键字 FROM

后跟一组用逗号分开的表名组成 每个表明都代表一个包括该查询要检索数据的表 这些表称为此

SQL 语句的表源 因为查询结果都源于它们

Where 子句告诉 SQL

只查询某些行中的数据 这些行用搜索条件描述

Group By

子句指定汇总查询 即不是对每行产生一个查询结果 而是将相似的行进行分组 再对每组产生一个汇总结果

Having 子句告诉 SQL 只产生有 Group By

得到的某些组的结果 和 Where

子句一样 所需要的组也用一个搜索条件指定

Order By

子句将查询结果按一列或多列中的数据排序 如果省略此子句 则查询结果将是无序的

下面作者将提供一个简单但实用的运用 SQL 语句查询的 ASP

程序供大家参考

为了使大家更清楚更直接地了解 SQL 语法在 ASP

中的应用 我们先将查询的所有核心过程写成一个名为 query table 的SUB 然后利用

ASP 的服务器端包容功能调用该 SUB 请将以下语句剪贴到记事簿 保存为

subdBTable inc 文件 并置于虚拟目录 asptest 下:

< %

sub query table(inputquery)

set conntemp=server createobject("adodb connection")

conntemp open "DSN=Student;uid=student;pwd=aspmagic"

set rstemp=conntemp execute(inputquery)

howmanyfields=rstemp fields count

统计数据库中的列数

%>

< table border= >< tr>

< %

for I= to howmanyfields

%>

< td>< b>< %=rstemp(I) name%>< /B>< /TD>

< % next %>

< /tr>

< %

do while not rstemp eof

%>

< tr>

< % for I = to howmanyfields

thisvalue=rstemp(I)

If isnull(thisvalue) then

thisvalue="

如果字段为空 则将变量 thisvalue 的值定义为一个空格

end if%>

< td valign=top>< %=thisvalue%>< /td>

< % next %>

< /tr>

< %rstemp movenext

loop%>

< /table>

< %

rstemp close

set rstemp=nothing

conntemp close

set conntemp=nothingend sub%>

完成了 SUB 的定义过程 在下面几个 ASP

程序中我们只要加入想要使用的 SQL

查询语句 并调用该过程就可以非常方便的得到查询结果 将以下四段代码分别保存为

asp a asp asp b asp asp c asp asp d asp 四个 asp 文件

< HEAD>< TITLE>asp a asp< /TITLE>< /HEAD>

< HTML>< body bgcolor="#FFFFFF">

< %

call query table("select from publishers where name like A%% ")

将表 publishers 中所有姓名中有字母 A 的记录查询出来

%>

< ! #include virtual="/asptest/subdBTable inc" >< /BODY><

/HTML>

< HEAD>< TITLE>asp b asp< /TITLE>< /HEAD>< HTML><

body bgcolor="#FFFFFF">

< %

call query table("select from titles where Year_Published > = ")

将表 titles 中所有发表年份大于或等于 年的记录查询出来

%>

< ! #include virtual="/asptest/subdBTable inc" >< /BODY><

/HTML>

< HEAD>< TITLE>asp c asp< /TITLE>< /HEAD>< HTML><

body bgcolor="#FFFFFF">

< %

call query table("select from publishers where amount> and

sex= male ")

将表 publishers 中所有数量大于 且性别为男的记录查询出来

%>

< ! #include virtual="/asptest/subdBTable inc" >< /BODY><

/HTML>

< HEAD>< TITLE>asp d asp< /TITLE>< /HEAD>< HTML><

body bgcolor="#FFFFFF">

< %

call query table("select from publishers where state< > NY ")

将表 publishers 中所有所在城市不为纽约的记录查询出来

%>

< ! #include virtual="/asptest/subdBTable inc" >< /BODY><

/HTML>

利用 subdBTable inc 文件中的所定义的过程 query table 你就可以非常迅速地对数据库进行查询 你所要做的只是将“conntemp open

"DSN=Student;uid=student;pwd=aspmagic"”中的数据库名称 用户身份和密码稍加改动 并在调用

query table 时输入想要使用的 SQL 查询语句即可 是不是很简单

这就是 ASP 和 SQL 的魅力所在 !!!

今天 我们虽然用了一整篇的篇幅只学习了一个 SQL

指令 但请你相信你所获得远不同于一个 DOS 指令 SELECT

指令使得你可以非常容易地对数据库进行查询 或许在这之前你对数据库查询还一无所知 但是通过本篇的学习 你其实已经会使用

ASP 进行常用的数据库查询了 是不是很激动

lishixinzhi/Article/program/net/201311/14199

ServerCreateObject("ADODBConnection")

创建一个新的数据库连接,只是分配空间,并没有初始化,还需要连接数据库

ServerCreateObject("ADODBRecordset")

创建一个新的数据库记录,也只是分配空间了,用的时候还需要查询数据库获得具体的记录

这个Text5是干什么用的?不明白你想在Text2显示啥结果,

如是要在Text2显示“售价”,Text2Text=nsjg 不就得了。

========================================================

首先你确认数据库中有没有“售价”这个字段,如果有,那你应该加个判断返回有没有数据记录,如:

If KeyAscii = 13 Then

strsql = "select 售价 from 商品管理 where 代码='" & dmtm & "'"

Set rs = getrs(strsql)

If rsRecordCount > 0 Then

num = rs(0)

If Len(dmtm) = 0 Then

MsgBox " 请输入商品代码或条形码! ", vbOKOnly, "提示"

ElseIf num <> 1 Then

MsgBox " 对不起,商品库存中没有对应的商品! ", vbOKOnly, "提示"

Else

nsjg = rs("售价")Value

Text5SetFocus

End If

End If

If rsState = adStateOpen Then rsClose: Set rs = Nothing

End If

'首先,工具->引用->选中Microsoft ActiveX Data Objects 2X Library

'必须选中,否则下面代码不会起作用!(以下链接数据库之方式,不需要使用ADODB控件,仅需代码即可)

Public Conn As New ADODBConnection

Public Rs As New ADODBRecordset

Public Cnt As Integer '这个Cnt是用来表示数据库数据总量的,对链接过程无关

'连接数据库的代码段

ConnCursorLocation = adUseClient '以Conn为链接名建立链接,这里是设置数据游标(客户端数据游标),即设定读取数据库数据之方式(一行一行地读)

ConnOpen "Provider=MicrosoftJetOLEDB40;Persist Security Info=False;Data Source=" & AppPath & "\testmdb"

'自己改动一下上面的路径和文件名即可,其他的代码你不理解照粘贴无妨

If RsState <> adStateClosed Then RsClose

RsOpen "SELECT 铺名, 上月读数, 本月读数, 实用度数, 铺位数, 首层面积, 非经营层面积, 欠费明细, 欠费金额 FROM data WHERE 首层面积 is not null and 非经营层面积 is not null;", Conn, adOpenKeyset, adLockPessimistic

Cnt = RsRecordCount

'关闭数据库链接(一般放到子过程结束处,关闭数据库链接)

RsClose

ConnClose

Set Rs = Nothing

Set Conn = Nothing

'添加、修改、删除、更新数据(都以ConnExecute后带SQL语句来实现对数据库的查询 *** 作)

'ConnExecute "update data set 上月读数 = 本月读数"

’RsMoveNext '数据游标转到数据库下一行

'实例:

For i = 1 To Cnt

DoEvents

ConnExecute "insert into data (ID,铺名,上月读数,本月读数,实用度数,铺位数) values(" & Rs("ID") & ",'" & Rs("铺名") & "'," & Rs("上月读数") & "," & Rs("本月读数") & "," & Rs("实用度数") & "," & Rs("铺位数") & ")"

RsMoveNext

Next

1一个简单的查询的例子:

'定义一个连接

Dim Conn As ADODBConnection

'定义一个记录集

Dim mrc As ADODBRecordset

'分别实例化

Set Conn = New ADODBConnection

set mrc =New ADODBRecordset

'定义一个连接字符串

dim ConnectString as string

ConnectString="provider=microsoftjetoledb40;data source=" & AppPath & "\data\数据库名mdb;jet oledb:database password=数据库密码"

'打开连接

Conn1Open ConnectString

'定义游标位置

Conn1CursorLocation = adUseClient

'查询记录集(从student表中找出名子为"张三"的记录)

mrcopen "select from student where name='张三'",Conn, adOpenKeyset, adLockOptimistic

'现在你已经得到了你想要查询的记录集了,那就是mrc

'你可以把此记录集与DataGrid榜定,用datagrid显示你查询的记录

set medatagriddatasource=mrc

由于VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库这里我们采用ADODB,相比DAO和能访 问数据库的API来说,它比DAO更灵活,更强大;而比起API,它更简单易用,更适合初学者而Access数据库比起SQL,也相对简单了很多,且能 够满足中小型应用程序的需要,所以我们在使用数据库时,选择了Access 就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计Access数据库的结构时,我们需要用到其它的程序来进行详细的规划建议采用的程序是office中的Access或VB自带的VISDATA 当数据库设计好了以后,我们可以开始数据库编程了 首先,我们需要引用ADO具体的方法是,在工程 -- 引用 中,找到Microsoft ActiveX Data Object Library,这里的是指的时ADO的版本号,一般来说,应用程序或ActiveX控件都具有向下兼容性,所以我们尽可能选择比较新的版本以确 保程序在能识别旧版本Access的同时,也能识别较新版本的Access 然后我们需要在程序中创建一个对象就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库常用的对象有两个,Connection和Recordset 创建这两个对象的具体方法是: 1在引用后,使用New关键字,如 Private Conn As New ADODBConnection Private Reco As New ADODBRecordset 2在没引用时,用CreateObject创建对象: Dim Conn,Reco Set Conn = CreateObject(ADODBConnection) Set Reco = CreateObject(ADODBRecordset) 创建了对象之后,下一步我们要做的就是打开数据库了 先看下面的代码,可以成功的打开数据库 Connopen Provider=MicrosoftJetOLEDB40;Data Source=D:Mainmdb 这句代码打开了D盘中的Mainmdb这个数据库 ConnectionOpen方法的第一个参数是连接代码,它将传递给系统的数据库引擎前半部分 Provider=MicrosoftJetOLEDB40,它表示了数据库的类型不同的数据库可能会不同后半句 Source=d:mainmdb它表示了数据库所在的绝对路径 打开数据库之后,还要打开表假如数据库中有一个表,表名为Users,字段有两个,一个为用户名,一个为密码那么看以下代码 1想返回Users中,[用户名]为去年烟花的[密码] Recordsetopen Select 密码 From Users Where 用户名='去年烟花',Connection,1,1 之后我们就可以把用户输入的密码进行比较,看是否允许登录 If Recordseteof and Recordsetbof then Msgbox 用户不存在!,16 Else If PassWord =Recordset(密码)value then msgbox 登录成功!,64 Else msgbox 密码错误!,32 End If End If RecordsetClose 2假设Admin已经成功登录系统,我们想把所有的用户名和密码都显示出来 Recordsetopen Select From Users,Connection,1,1 这时,表已经被打开,我们就用以下代码把它显示出来 Do whlie Not Recordseteof Print 用户名: & Recordset(用户名)value & 密码: & Recordset(密码)value RecordsetMoveNext Loop RecordsetClose 由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有第一个参数是SQL语句 Select [字段名] From 表名 [Where 条件] 这里的条件可以省略且字段名也可以用来代替所有字段 需要注意的是,如果你用(1)中的方法打开,那么(2)后面显示的代码就不能再用在(1)中因为(1)里并没有打开[用户名]字段,所以这一句Recordset(密码)就没有值存在,还有可能出错 后面的条件,可以用=、>、<等运算符比如 Where ID > 32(这里假设[ID]为数字型) 这是打开的部分第二个很重要的部分就是查询记录 数据库它并不是把所有记录全部放到一个变量中备用的而是以当前记录的形式来返回一个值所以我们想从中找到有用的信息,就必须要对信息进行定位/筛选 定位: 移动到下一条 RecordsetMoveNext 移动到上一条 RecordsetMovePrevious 移动到最后一条 RecordsetMoveLast 移动到第一条 RecordsetMoveFrist 移动到某一条 RecordsetMove Number 筛选: RecordsetFind 条件 如:[用方法(2)打开表之后] Private Sub Command1_Click() RecordsetFind 用户名= & text1text If RecordsetEof <> True Then Msgbox 该用户的密码是: & Recordset(密码)value,64 Else Msgbox 未找到该用户的资料!,16 End If End Sub MoveNext 只有当Eof不为True时,才可用,否则发生错误而MovePrevious刚是Bof不为True时 而只要Eof 和 Bof中有一个不为真时,也就是说只要有一条记录时,它就可以使用 Find 方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的当在已打开的记录集中,找不到该记录时,Eof为True找到则当前的值就是符合条件的记录 第三个部分就是添加/修改记录 修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了 比如:[(修改密码)按方法(1)打开表之后] Recordset(密码)value = 123456 RecordsetUpdata 需要注意的就是,在修改完成后,要调用Updata方法,这样修改才能生效 而添加记录则可以用以下代码来实现: Recordsetaddnew Recordset(用户名)value = Admin Recordset(密码)value = Admin RecordsetUpdata 这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用Updata方法 到这里就差不多了,最后说一下上面提到的几个方法 RecordsetOpen SQL语句,数据源,游标类型,打开方法 SQL语句不用说了,就是Select那啥的,目的就是按要求从表中返回数据 数据源就是一个打开之后的Connection对象 填1就可以了 打开方法对应了几个常数,具体哪几个可以从对象浏览器里看。 对应数值的意义: 1 只读 2 独占 3 可写 4 自已可写,别人可读。 Connectionopen 连接代码,服务器用户名,密码。

1、有向导可用,你在屏幕左侧看跟

工具箱

挨着的有个

数据源

管理,这里点新数据源,就可以向导连接。

2、那个Microsoft

ActiveX

Data

Object缩写简称ADO,很好找,是有的,有空q我,给你发截图看。

3、

数据绑定

没有向导,也不需要,简单的设置一个datasource属性即可,不需要复杂的向导。

4、不是用ADO

控件

,而是用ADOnet

程序

集,要连接到

Microsoft

SQL

Server

70

或更高版本,请使用

SQL

Server

NET

Framework

数据提供程序的

SqlConnection

对象。

要连接到

OLE

DB

数据源,或连接到

Microsoft

SQL

Server

6x

或更低版本,请使用

OLE

DB

NET

Framework

数据提供程序的

OleDbConnection

对象。

5、应该是Adodc1ConnectionString="xxxxxxxxx"

引号中为连接

字符串

,具体的

语法

建议你按F1看MSDN的帮助,很详细。

6、还有问题可以共同探讨,qq369220969

以上就是关于ASP基础入门:数据库查询语言(1)全部的内容,包括:ASP基础入门:数据库查询语言(1)、ADODB.Connection与ADODB.Recordset 分别是什么如何理解、VB中ADO对数据库的查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9820653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存