老笔记整理一:asp

学生时代 主要用的是asp 和 asp.net 笔记也写了不少,现在回头看看有不少不错的代码。现整理后贴出来。

自用函数库: fun.asp

 1 Dim mConn,mRs
 2 mConn="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("BBS.mdb")
 3
 4 public function OpenRs(mSQL)
 5  set OpenRs=server.CreateObject("ADODB.RecordSet")
 6   OpenRs.Open mSQL,mConn
 7 end function
 8
 9 public sub GetRs(mSQL)
10  set mRs=OpenRs(mSQL)
11 end sub
12
13 public sub closeRs()
14  mRs.close
15  set mRs=nothing
16 end sub
17
18 public sub ExcuteRs(mSQL)
19  dim mCmd
20  set mCmd=server.CreateObject("ADODB.Command")
21   mCmd.activeconnection=mConn
22   mCmd.commandtext=mSQL
23   mCmd.execute
24   mCmd.activeconnection.close
25  Set mCmd=nothing
26 end sub
27
28 public function FindUser(mWhere)
29  dim tr
30  set tr=OpenRs("select * from " & mWhere)
31  if tr.bof and tr.eof then
32   FindUser=false
33  else
34   FindUser=true
35  end if
36 end function
37
38 public function GetPara(Para)
39  if request.ServerVariables("REQUEST_METHOD")="GET" then
40   GetPara=request.QueryString(Para)
41  else
42   GetPara=request.Form(Para)
43  end if
44 end function

第一步,我们先要定义两个变量mConn和mRs

1 mConn="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("BBS.mdb")

这里,mConn的作用是连接数据库。而 Driver={Microsoft Access Driver (*.mdb)};DBQ=    这句代码是通过ODBC链接数据库,可以在自定义连接字符串中复制粘贴。而server.MapPath里的BBS.mdb是你数据库的名字。

第一个函数:

1 public function OpenRs(mSQL)
2  set OpenRs=server.CreateObject("ADODB.RecordSet")
3   OpenRs.Open mSQL,mConn
4 end function

因为在后面的函数里会有重复使用到的地方,所以我们把公共部分提出来,写成函数。

第二个函数:

1 public sub GetRs(mSQL)
2  set mRs=OpenRs(mSQL)
3 end sub

作用为读出数据库。所以只要直接让变量mRs=OpenRs就行了。()中的mSQL是参数的意思。你在调用函数时写入的参数电脑会执行。

第三个函数:

1 public sub closeRs()
2  mRs.close
3  set mRs=nothing
4 end sub

此函数的作用是关闭数据库,数据库只开不关,系统会崩溃的。

第四个函数:

1 public sub ExcuteRs(mSQL)
2  dim mCmd
3  set mCmd=server.CreateObject("ADODB.Command")
4   mCmd.activeconnection=mConn
5   mCmd.commandtext=mSQL
6   mCmd.execute
7   mCmd.activeconnection.close
8  Set mCmd=nothing
9 end sub

此函数能读写数据库。包括select(查找)undate(更新)delete(删除)insert(写入)

第五个函数:

1 public function FindUser(mWhere)
2  dim tr
3  set tr=OpenRs("select * from " & mWhere)
4  if tr.bof and tr.eof then
5   FindUser=false
6  else
7   FindUser=true
8  end if
9 end function

在上一篇登录篇中,在后台我们要做一件事。就是判断我们提交的用户名在数据库中是否存在。如果我们用do loop来循环,虽然也会有相同的效果,但效率会降低很多。因此我们写了这个函数 。我们只要判断第一条与最后一条是否同时满足条件。因为从第一条到最后一条都没有的话,那么此用户一定不存在。只要有一条记录有效,那么这个用户是已经存在的。

第六个函数:

1 public function GetPara(Para)
2  if request.ServerVariables("REQUEST_METHOD")="GET" then
3   GetPara=request.QueryString(Para)
4  else
5   GetPara=request.Form(Para)
6  end if
7 end function

这是判断参数获得方式的函数。还在为post应该用form还是querystring而烦恼吗?那么有个好消息,你不用再去背了。

request.ServerVariables("REQUEST_METHOD")是参数传递方式的意思。周三上兴趣小组的人应该明白传递方式是什么。传递参数的方式一共有二个。post对form,get对querystring。所以,我们只要作一个简单的判断就行了。当方式是

get的时候,我们用qurtystring;当方式为post时,我们就用form。

今天就是这么多,大家以后若是发现有在多个网页中重复打到的东西,你完全可以写成公共函数放在fun里。

这是09年的时候老师帮我写的函数库,事实证明这个节约了不少工夫与时间。这个是1.0版本,后来转asp.net了以后数据库连接这块就有更好的方式(有初步mvc的概念),这种代码的化归思想一直在我现在的工作项目中给予我莫大的帮助。

时间: 2024-08-26 10:18:02

老笔记整理一:asp的相关文章

老笔记整理二:网页小问题汇总

最近有一些小问题.想在这里写出来.一是方便大家排错,再是自己也整理一下. 1.很傻的小问题...参数提交方式有一个应该是form而不是from.(英语老师,我对不起你...) 2.用超链接传参数,在?后面不能有空格. 3.表单里的东西(如文本域)放完后,记得要改name(名字)和value(数值).否则在后台会报错.通常是fun.asp里 ExcuteRs里mCmd.execute出错. 4.where 语句里字符串一定要加单引号,基本都是' "  &  变量  &  "

老笔记整理四:字符串的完美度

今天在宠果网上发现一道题目,求一个字符串的完美度http://hero.pongo.cn/home/index觉得这道题很有趣就挑战了一下,结果没有在规定的1小时里面写完(笑),多花了10分钟终于做出来了. 题目是这样的:我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的. 现在给定一个字符串,输出它的最大可能的完美度. 例如:dad,你可以将26分配

老笔记整理六:MD5的小作死

MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.是计算机广泛使用的杂凑算法之一. MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别. 4.弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的. 5.强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的

老笔记整理七:高斯分布解决随机圆分布问题

好久没有写空间了,今天在写一个页面的时候遇到了之前从来没有遇到过的问题.今天有主要问题有两个.     1.我想在背景上生成随机圆:    2.是基于上面产生的问题. 首先,通过JS生成DIV,给DIV 加DSS让他成为一个圈.这个问题不大,大概半个小时就写出来了. div结构也不复杂 然后运行结果 大家 看出问题了吗?是的,产生的圆不怎么会在当中.想想也是,既然是随即生成的那么应该是平均分布的. 但是这并不是我想要的结果.我之所以要这些圆圈是为了让背景好看点,如果看不到那还有什么意思?但是又不

老笔记整理五:C实现10阶内通过展开代数余子式求行列式的值

这个分为两部分,先是写出了C实现计算三阶行列式,然后过了一段时间突然有了思路才写下了10阶内这段代码.真怀念那段写代码的日子. 一:C实现计算三阶行列式 最近高数课在上线性代数,二阶的还能口算,三阶的有点麻烦,想陆陆续续地把公式都用C来实现.因为二阶的行列式如果用C来写就是一句话:val=det[0][0]*det[1][1]-det[0][1]*det[1][0];太简单了这里就不写了,主要写关于三阶的.只要把这个三阶行列式里每一个元素打进去就能算出值来了.过两天再写余子式的展开. 1 #in

Hive笔记整理(一)

[TOC] Hive笔记整理(一) Hive Hive由facebook贡献给Apache,是一款建立在Hadoop之上的数据仓库的基础框架. 数据仓库 特点--关于存放在数据仓库中的数据的说明: 是能够为企业的各个级别的决策提供数据支撑的数据 其实说白了,就是一个存放数据的仓库 数据库和数据仓库之间的区别 现代数据仓库,是构建在数据库之上的,使用数据库作为载体存放数据. 数据仓库着重强调的是存放的历史数据,数据库着重强调的是存放在线的数据. 数据仓库着重强调的是OLAP的操作,数据库着重强调的

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

WPF笔记整理--DataBinding(2)

图片绑定时的一个问题.场景如下: 有2个窗口A和B,A窗口的业务逻辑是编辑生成图片.然后从A窗口可以打开B窗口.B窗口是由A生成所有图片的列表.当在A窗口编辑生成图片并保存后打开B窗口就会看到刚刚生成的图片.关闭B窗口,可以在A窗口中继续编辑图片,再次保存图片并打开B窗口,就会看到最新的图片的变化.图片是保存在本地路径. 解决方案:定义一个Converter,将图片读到MemoryStream中,然后再Binding.代码如下: public object Convert(object valu

WPF笔记整理--DataBinding(1)

WPF的数据绑定是一大亮点.如果用WPF而不用数据绑定,那就太失败了. 也不多废话,如果不知道如何绑定,请百度一下.这里简单的提几点: 1. ObservableCollection可用于集合绑定,由于已经实现了INotifyPropertyChanged,可以通过添加删除集合中的元素来实现对UI列表项更新.注意,当一个ObservableCollection已经有元素,通过再次new集合并不能实现清空页面已显示的内容. 如果希望ObservableCollection中某列表项的属性值改变显示