VB生成的ASP封装access数据库dll代码

admin6年前IT技术1749

 

这篇文章以VB生成的DLL封装ASP代码来连接数据库(以Access数据库为例)。一般情况下我们在用ASP连接Access的数据库时通常都会进行如下的操作 
'//Proconn.asp 
<%dim ProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'一个原本为DB.mdb的Access数据库更改后缀为DB.asp的文件,数据库密码123
if err.Number <> 0 then
    ResPonse.Write "数据库没有连结,请检查"
    ResPonse.End
else
    ResPonse.Write "数据库连结成功"
    ResPonse.End
end if %>
 
如果配置好服务器,访问Proconn.asp,如果连接数据库成功会输出“数据库连结成功”。 
但是这样的asp代码的安全级别非常低,如果此asp原代被人看到,那么再有此数据库文件的话,其他人就能轻而易举的 
随便打开你的数据库进行操作。 
所以我们的任务来了,如何将这些关键的内容封装起来呢? 
首先需要确定方式方法和对象。 
查看了网上的一些资料,主要都是用VB生成DLL的办法来封装的,那么我们也采取这样的方法好了,(虽然我还没用真正用过VB这东东) 
方式方法确定,那么什么是我们需要封装的对象呢? 
大家来看 
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp") 
是最关键的代码,这段代码封装在一个用VB生成的DLL中,应该比较好。 
之所以不将整个 
dim ProConn 
set ProConn=Server.CreateObject("ADODB.CONNECTION") 
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp") 
都封装,(因为网上有讲将整个连接代码都封装)是因为,在其他asp文件引用Proconn.asp时, 
我还需要里面的ProConn进行其他操作,如果封装,不便进行引用和操作。 
(以上封装对象的解释原因是我个人的见解,有朋友说整体封装对ProConn的使用没有影响,这个我不理解,请知道的给我讲讲) 
 
所在只想封装最关键的部分“"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")” 
分析一下这段要封装的内容, 
它的前半部分就是一个字符串: 
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" 
用&连接上后半部分的另一个字符串。 
后半部分的另一个字符串是Server.MapPath对象函数的返回值。 
  
下面开始这个封装的操作过程。 
首先 
新建一个VB下的ActiveX DLL工程,工程的名称Project1更改成ConDBDLL?? 方法class1的名称更改成cs 
工程名和方法名会在调用这个DLL的时候使用到,大家可以按照自己命名规则定义,但请注意好好使用。 
这个DLL的代码部分书写如下: 
Dim rp As Response 
Dim rq As Request 
Dim ap As Application 
Dim sr As Server 
Dim sn As Session 
Public Sub OnStartPage(MyScriptingContext As ScriptingContext) 
Set rp = MyScriptingContext.Response 
Set rq = MyScriptingContext.Request 
Set sr = MyScriptingContext.Server 
Set ap = MyScriptingContext.Application 
Set sn = MyScriptingContext.Session 
End Sub 
Public Sub OnEndPage() 
Set rp = Nothing 
Set rq = Nothing 
Set sr = Nothing 
Set ap = Nothing 
Set sn = Nothing 
End Sub 
'以上语句是必须的,将原本的对象作了简化处理,并在两个基本函数中作了处理 
Public Function ConnectDB() As Variant 
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" 
End Function 
'上面这个函数是处理前半部分字符串的,直接返回这个字符串的内容 
'另外定义下面这个函数来处理后半部分内容 
Public Function DBPath() As Variant 
           DBPath = sr.MapPath("DB.asp") 
End Function 
'注意上面使用的是sr,不要使用成Server了 
到了关键的一步,给这个工程添加"Microsoft Active Server Pages ObjectContext Object Library" 的 Reference 
添加方法,选择菜单中的"Project"->"Reference",在打开的对话框里选择。 
对了,还要选择上"microsoft  activeX  data  objects  2.6  library" 
进行完以上操作,我们就可以编译生成DLL了,(别忘了前面的改工程名和方法名) 
准备好数据库文件DB.asp (由DB.mdb更改后缀而成,密码123) 
下面就是调用封装的连接数据库的asp文件代码: 
'//ProConn.asp 
<%dim ProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
Dim ConDB
set ConDB=Server.CreateObject("ConDBDLL.Conn")'ConDB就是创建的DLL对象
Dim StrConn'定义一个字符串
StrConn = ConDB.ConnectDB() & ConDB.DBPath()'连接两部分内容组成字符串
ProConn.Open StrConn '执行数据库对象操作%>
 
由于是自己创建的DLL,把它拷贝到相应的目录后,必须注册才能使用。 
注册的方法,在“运行”中执行: 
Regsvr32.exe lyfUpload.dll 
取消这个DLL的注册的方法是:Regsvr32.exe /u lyfUpload.dll 
注册完毕,我们的工作基本上就做完了,现在我们可以使用这样的封装方法连接具有针对性的数据库了。 
不过有一点需要特别注意的是: 
由于 
Dim ConDB 
set ConDB=Server.CreateObject("ConDBDLL.Conn") 
'ConDB就是创建的DLL对象 
这是在ASP中创建的对象,包括ProConn,那么我们在任何使用到(引用)ProConn.asp的其他ASP文件中记得释放这两个对象! 
ProConn.close 
set ProConn=nothing 
set ConDB=Nothing 
否则系统会由于对象没有释放,而变得越来越不堪重负。 
关于这个封装ASP代码连接Access数据库的方法,我想完全适用其他数据库的连接方法。 
我想我的这个方法并不是最好的,有任何不足之处,请看过的人给我指正,在此先行谢过。
 

相关文章

视频处理注意要点

 1.拍视频的项目,你必须熟练不然容易占用时间2.不要怕视频长,可以修减3.视频的宽度是500 高度是1000,能保证在手机上播放是清晰的 pre减掉的视频块要用下面的拉伸,不然只...

webview 不能启用的原因

1.报错是乱码没有设置,不知道是什么原因造成的,点击这个 “放大镜” 或 “双击Shift” 打开这个对话框,并...

GoogleTranslate-基于Google翻译的免费火车头PHP翻译插件[转]

前言之前各国语言标识见本文下面的“语言标识”部分。3.2.新建一个标签名叫“翻译标签”的标签用来设置需要翻译的标签和保存翻译后内容的标签,数据获取方式选...

excel 批量粘贴图片的方法

1.e2是图片地址在表格下拉,批量输入="<table><img src="&e2&" height=100&nbs...

1.解压缩

将下载到本地的安装介质解压缩。然后,将解压后的文件夹mysql-5.7.16-winx64拷贝到安装目录(E盘根目录)下。

2.设置系统环境变量

右键点击 计算机>>属性>> 高级系统属性>>环境变量>> 编辑 Path ,在最后添加” ;E:\mysql-5.7.16-winx64\bin“,确定。

3.创建my.ini 文件和data目录,配置安装路径与数据存储路径

在E:\mysql-5.7.16-winx64目录下创建data目录和my.ini,并在my.ini中配置安装路径与数据存储路径等信息。

点击(此处)折叠或打开

  1. [mysql]
  2. default-character-set=utf8
  3. [mysqld]
  4. max_connections=200
  5. default-storage-engine=INNODB
  6. basedir =E:\mysql-5.7.16-winx64\bin
  7. datadir =E:\mysql-5.7.16-winx64\data
  8. port = 3306

 

4.安装MySQL服务

首先,以管理员身份运行 cmd 并切换到MySQL的bin目录下;

接下来,执行mysqld --initialize-insecure

    这条命令用来初始化data文件,其中insecure选项指定登录无需口令。

点击(此处)折叠或打开

  1. D:\>e:
  2.  
  3. E:\>cd mysql-5.7.16-winx64
  4.  
  5. E:\mysql-5.7.16-winx64>cd bin
  6.  
  7. E:\mysql-5.7.16-winx64\bin>mysqld --initialize-insecure
  8.  
  9. E:\mysql-5.7.16-winx64\bin>

需要注意的是,如果不指定insecure选项,则会随机生成登陆密码, 在E:\mysql-5.7.16-winx64\data文件夹下,有一个 hoegh.err 文件,其中hoegh是主机名,打开会看到:
2016-10-20T09:34:56.806257Z 1 [Note] A temporary password is generated for root@localhost: p-mcI:ijR6Xg,
其中 p-mcI:ijR6Xg即为随机密码。

然后,输入 mysqld --install安装MySQL服务

我们会看到界面出现:Server successfully installed,这就说明MySQL服务安装成功。 

点击(此处)折叠或打开

  1. E:\mysql-5.7.16-winx64\bin>
  2.  
  3. E:\mysql-5.7.16-winx64\bin>mysqld --install
  4. Service successfully installed.
  5.  
  6. E:\mysql-5.7.16-winx64\bin>

5.启动MySQL服务

输入  net start mysql  回车, 就会看到: MySQL 服务已经启动成功。尝试使用root用户登录数据库,并通过show databases命令查看数据库概要信息。

点击(此处)折叠或打开

  1. E:\mysql-5.7.16-winx64\bin>
  2. E:\mysql-5.7.16-winx64\bin>net start mysql
  3. MySQL 服务正在启动 .
  4. MySQL 服务已经启动成功。
  5.  
  6.  
  7. E:\mysql-5.7.16-winx64\bin>mysql -u root
  8. Welcome to the MySQL monitor. Commands end with ; or \g.
  9. Your MySQL connection id is 2
  10. Server version: 5.7.16 MySQL Community Server (GPL)
  11.  
  12. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  13.  
  14. Oracle is a registered trademark of Oracle Corporation and/or its
  15. affiliates. Other names may be trademarks of their respective
  16. owners.
  17.  
  18. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  19.  
  20. mysql> show databases;
  21. +--------------------+
  22. | Database |
  23. +--------------------+
  24. | information_schema |
  25. | mysql |
  26. | performance_schema |
  27. | sys |
  28. +--------------------+
  29. 4 rows in set (0.00 sec)
  30.  
  31. mysql>

 

6.修改root密码

    安全起见,我们修改一下root密码。

点击(此处)折叠或打开

  1. mysql>
  2. mysql> alter user 'root'@'localhost' identified by 'root';
  3. Query OK, 0 rows affected (0.00 sec)
  4.  
  5. mysql>
  6. mysql> exit
  7. Bye
  8.  
  9. E:\mysql-5.7.16-winx64\bin>mysql -u root -proot
  10. mysql: [Warning] Using a password on the command line interface can be insecure.
  11. Welcome to the MySQL monitor. Commands end with ; or \g.
  12. Your MySQL connection id is 4
  13. Server version: 5.7.16 MySQL Community Server (GPL)
  14.  
  15. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  16.  
  17. Oracle is a registered trademark of Oracle Corporation and/or its
  18. affiliates. Other names may be trademarks of their respective
  19. owners.
  20.  
  21. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  22.  
  23. mysql> show databases;
  24. +--------------------+
  25. | Database |
  26. +--------------------+
  27. | information_schema |
  28. | mysql |
  29. | performance_schema |
  30. | sys |
  31. +--------------------+
  32. 4 rows in set (0.00 sec)
  33.  
  34. mysql>


MySQL数据库可以用任意ip连接访问的方法

 

过CMD命令行修改

MYSQL安装

  今天在Windows Server 2008 r2系统下部署了MySQL Community Server 5.7.16,安装过程中也遇到了一些问题,在这儿记录一下最终的安装过程。0.下...

magento性能优化的教程

Magento是一套专业开源的电子商务系统,Magento设计得非常灵活,具有模块化架构体系和丰富的功能但有朋友会发现此模块用到了会发现非常的缓慢了,那么下面我们来看关于magento性能优化的例子。...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。