仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 410|回复: 9
打印 上一主题 下一主题

[学习教程] ASP网站制作之第十二课:数据库查询言语(1)

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:27:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。原定企图从本篇入手下手就要给人人先容ASP内建的ActiveX组件,可是思索到我们在今后的进修中将会打仗到大批的数据库查询,因而作者一时决意花一到两篇的篇幅向人人扼要先容一些数据库查询言语的基础常识,这实在也是进修ASP所必需把握的一门常识。是不是可以天真地使用数据库查询言语,将间接干系到ASP程序的实行效力等一系列成绩,以是请列位务必器重。

  信任良多伴侣都传闻过SQL这个名字,假如你是盘算机方面的内行,SQL的台甫必定是如雷灌耳。那末SQL事实是甚么呢?SQL一词实践上是"StructuredQueryLanguage"布局式查询言语的缩写,是用于对寄存在盘算机数据库中的数据举行构造、办理和检索的一种工具;是一种特定范例的数据库--干系数据库。而把持这类数据库的盘算机程序就是我们常说的DBMS--数据库办理体系。比如:SQLServer、Oracle、Sybase、DB2等等。当用户想要检索数据库中的数据时,就经由过程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的发卖纪录表,以下所示:
姓名性别人为发卖方针发卖额区域墨客男250080009000上海吴冠军男3000100009999北京雷叫男2000800010000四川雪后代250050006000广州顾一男260090009800年夜连阿卓女200040004000天津熠天男40002000020000天下  在该表中有六列即六个字段:姓名、性别、人为、发卖方针、发卖额、区域,起首我们用Select语句列出姓名、发卖方针和发卖额:
  Select姓名,发卖方针,发卖额Fromsales
  了局以下:

姓名发卖方针发卖额墨客80009000吴冠军100009999雷叫800010000雪儿50006000顾一90009800阿卓40004000熠天2000020000  然后,我们再列出一切男性的姓名、发卖方针和发卖额:
  Select姓名,发卖方针,发卖额FromsalesWhere性别="男"
  了局以下:

姓名发卖方针发卖额墨客80009000吴冠军100009999雷叫800010000顾一90009800熠天2000020000

 
 接上去,我们做一个绝对庞大的查询,列出发卖额年夜于发卖方针的一切男性的姓名、发卖方针和发卖额,而且按发卖方针排序。
  Select姓名,发卖方针,发卖额
  Formsales
  Where发卖额>发卖方针
  And性别="男"
  OrderBy发卖方针
  了局以下:
姓名发卖方针发卖额墨客80009000雷叫800010000顾一90009800熠天2000020000 人人能够看到,关于复杂查询,SQLSelect语句和英文语法很相象,我们来剖析一下SELECT语句的完全格局,它包含六个子句,个中SELECT和FROM子句是必需的,别的子句能够任选,每一个子句的功效以下:

  1、Select子句列出一切请求SELECT语句检索的数据项。它放在SELECT语句入手下手处,指定此查询要检索的数据项。这些数据项一般用选择表暗示,即一组用“,”离隔的选择项。依照从左到右的按次,每一个选择项发生的一个列的查询了局,一个选择项多是以下项目:

  (1)、列名:标识FROM子句指定表中的列。假如列名作为选择项,则SQL间接从数据库表中每行掏出该列的值,再将其放在查询了局的响应行中。
  (2)、常数:指定在查询了局的每行中都放上该值。
  (3)、SQL表达式:申明必需将要放进查询了局中的值按表达式的划定举行盘算。
  2、From子句列出包括所要查询数据的表,它由关头字FROM后跟一组用逗号分隔的表名构成。每一个标明都代表一个包含该查询要检索数据的表。这些表称为此SQL语句的表源,由于查询了局都源于它们。
  3、Where子句告知SQL只查询某些行中的数据,这些行用搜刮前提形貌。
  4、GroupBy子句指定汇总查询,即不是对每行发生一个查询了局,而是将类似的行举行分组,再对每组发生一个汇总了局。
  5、Having子句告知SQL只发生有GroupBy失掉的某些组的了局,和Where子句一样,所必要的组也用一个搜刮前提指定。
  6、OrderBy子句将查询了局按一列或多列中的数据排序。假如省略此子句,则查询了局将是无序的。
  上面作者将供应一个复杂但有用的使用SQL语句查询的ASP程序供人人参考。
  为了使人人更分明更间接地懂得SQL语法在ASP中的使用,我们先将查询的一切中心历程写成一个名为query2table的SUB,然后使用ASP的服务器端包涵功效挪用该SUB。请将以下语句剪贴到记事簿,保留为subdbtable.inc文件,并置于假造目次asptest下:

  <%
  subquery2table(inputquery)
  setconntemp=server.createobject("adodb.connection")
  conntemp.open"DSN=Student;uid=student;pwd=aspmagic"
  setrstemp=conntemp.execute(inputquery)
  howmanyfields=rstemp.fields.count-1
  统计数据库中的列数
  %>
  <tableborder=1><tr>
  <%
  fori=0tohowmanyfields
  %>
  <td><b><%=rstemp(i).name%></B></TD>
  <%next%>
  </tr>
  <%
  dowhilenotrstemp.eof
  %>
  <tr>
  <%fori=0tohowmanyfields
  thisvalue=rstemp(i)
  Ifisnull(thisvalue)then
  thisvalue="?
  假如字段为空,则将变量thisvalue的值界说为一个空格
  endif%>
  <tdvalign=top><%=thisvalue%></td>
  <%next%>
  </tr>
  <%rstemp.movenext
  loop%>
  </table>
  <%
  rstemp.close
  setrstemp=nothing
  conntemp.close
  setconntemp=nothingendsub%>

  完成了SUB的界说历程,鄙人面几个ASP程序中我们只需到场想要利用的SQL查询语句,并挪用该历程就能够十分便利的失掉查询了局。将以下四段代码分离保留为asp11a.asp、asp11b.asp、asp11c.asp、asp11d.asp四个.asp文件。

  <HEAD><TITLE>asp11a.asp</TITLE></HEAD>
  <HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*frompublisherswherenamelikeA%%")
将表publishers中一切姓名中有字母A的纪录查询出来
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>


  <HEAD><TITLE>asp11b.asp</TITLE></HEAD><HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*fromtitleswhereYear_Published>=1998")
将表titles中一切宣布年份年夜于或即是1998年的纪录查询出来
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>


  <HEAD><TITLE>asp11c.asp</TITLE></HEAD><HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*frompublisherswhereamount>10000andsex=male")
将表publishers中一切数目年夜于10000且性别为男的纪录查询出来
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>


  <HEAD><TITLE>asp11d.asp</TITLE></HEAD><HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*frompublisherswherestateNY")
将表publishers中一切地点乡村不为纽约的纪录查询出来。
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>

  使用subdbtable.inc文件中的所界说的历程query2table,你就能够十分敏捷地对数据库举行查询,你所要做的只是将“conntemp.open"DSN=Student;uid=student;pwd=aspmagic"”中的数据库称号、用户身份和暗码略加修改,并在挪用query2table时输出想要利用的SQL查询语句便可。是否是很复杂?这就是ASP和SQL的魅力地点!!!

  明天,我们固然用了一整篇的篇幅只进修了一个SQL指令,但请你信任你所取得远分歧于一个DOS指令,SELECT指令使得你能够十分简单地对数据库举行查询,也许在这之前你对数据库查询还一窍不通,可是经由过程本篇的进修,你实在已会利用ASP举行经常使用的数据库查询了,是否是很冲动?鄙人一篇中,作者将持续给人人先容SQL的别的几个基础指令。在停止本文之前,作者在这里要向良多来信的伴侣道歉,因为比来作者事情忙碌,其实得空逐一回覆列位的成绩,请包涵,我会只管将一些罕见的、产生频次较高的成绩在文章中写出来,至于一些不罕见的成绩,我倡议人人到上面这个站点发问,你将会失掉实时的回复。www.onlinechina.net/friend/flybird/bbs/wwwboard.asp?id=1,这是作者至今为止所见的最棒的中文ASP进修站点,由上海的飞鸟掌管,人人务必往看看。
帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。
海妖 该用户已被删除
沙发
发表于 2015-1-19 12:49:55 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
深爱那片海 该用户已被删除
板凳
发表于 2015-1-24 15:18:39 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
柔情似水 该用户已被删除
地板
发表于 2015-2-1 18:48:23 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
第二个灵魂 该用户已被删除
5#
发表于 2015-2-7 14:27:39 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-22 08:53:47 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
再见西城 该用户已被删除
7#
发表于 2015-3-7 00:03:31 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
透明 该用户已被删除
8#
发表于 2015-3-13 23:09:42 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
冷月葬花魂 该用户已被删除
9#
发表于 2015-3-13 23:09:43 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
admin 该用户已被删除
10#
发表于 2015-3-20 22:11:29 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 03:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表