数据库连接封装到DLL

时间:2021-05-12 21:52:13
CSDN - 专家门诊 -
主  题:
如何将数据库连接封装到DLL?并且调用?急等
作  者: bignobig ()
信 誉 值: 100
所属论坛: Web 开发 ASP
问题点数: 100
回复次数: 24
发表时间: 2005-1-11 13:36:26
如何将数据库连接封装到DLL?并且调用?急等

回复人: bignobig() ( ) 信誉:100 2005-1-11 13:49:17 得分:0
 
顶上去!

Top
回复人: tatty_bad(我总是出现在该出现的地方) ( ) 信誉:100 2005-1-11 13:51:14 得分:2
 
封装进去之后,还修改不?呵呵。
所以我建议用缓存来做。。。这样比较好实现修改用户名密码。

Top
回复人: laihongbo524(风铃夜思雨) ( ) 信誉:96 2005-1-11 13:57:41 得分:60
 
Option Explicit
'VB ActiveX DLL 类模块代码
'
'-----引用ASP中的一些设置------
Private ScriptingContext As ASPTypeLibrary.ScriptingContext
Private Server As ASPTypeLibrary.Server

'以下两个子程序是必须的
Public Sub OnStartPage(PassedScriptingcontext As ScriptingContext)
    Set ScriptingContext = PassedScriptingcontext
    Set Server = ScriptingContext.Server
End Sub
Public Sub OnEndPage()
    '取消所有的引用
    Set ScriptingContext = Nothing
    Set Server = Nothing
End Sub

'如使用SQL的数据库,上面这些可以不要,否则要引用asp.dll  Microsoft Active Server Pages Object Library

'要引用 Microsoft ActiveX Data Objects 2.8 Library
Public Function ConnS() As ADODB.Connection
Dim Con As ADODB.Connection
Set Con = New ADODB.Connection
'ACCESS
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("#webdb.mdb")
'SQL
'Con.Open "Provider = SQLoledb; User ID = sa; Password = 123456; Initial Catalog = bbs; Data Source = 192.168.0.100;"
Set ConnS = Con
Set Con = Nothing
End Function



'ASP的CONN.ASP中的写方法
Dim Conn, Con
Set Conn = Server.CreateObject("ADODB.Connection")
Set Con = Server.CreateObject("工程名称.类模块名称")
Set Conn = Con.ConnS

'ASP中就可以使用如rs.open "Select * FROM [Table]",conn,1,1、Conn.Excute("Select * FROM [Table]") 这些一样操作了


Top
回复人: laihongbo524(风铃夜思雨) ( ) 信誉:96 2005-1-11 14:00:55 得分:0
 
如果要求可修改的
VB中的代码如下
Public Function ConnS(ByVal DbFile As String) As ADODB.Connection
Dim Con As ADODB.Connection
Set Con = New ADODB.Connection
'ACCESS
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DbFile
Set ConnS = Con
Set Con = Nothing
End Function

'ASP的CONN.ASP中的写方法
Dim Conn, Con
Set Conn = Server.CreateObject("ADODB.Connection")
Set Con = Server.CreateObject("工程名称.类模块名称")
Set Conn = Con.ConnS(server.mappath("dbname.mdb"))

Top
回复人: mackyliu(NB联盟--风流才子) ( ) 信誉:100 2005-1-11 14:09:14 得分:2
 
没意义的事少做点吧,兄弟。怕人家下载数据库有办法解决的,完全没必要用到组件

Top
回复人: qizu(沁竹) ( ) 信誉:100 2005-1-11 14:11:42 得分:10
 
组件工程

1.建立组件

工程名:ConDBDLL
类模块:cs

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={SQL Server};server=(local);database=数据库名;uid=用户名;pwd=密码"

End Function


2.连接信息

dim Conn
Dim Condl
Dim ConnStr
set Condl=Server.CreateObject("ConDBDLL.cs")
'ConDB就是创建的DLL对象
ConnStr = Condl.ConnectDB()
'连接两部分内容组成字符串      
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接失败!"'注释,需要把这几个字翻译成英文。
Response.End
End If


Top
回复人: fronm(时间) ( ) 信誉:100 2005-1-11 14:12:30 得分:2
 
up

Top
回复人: hoggio_1980(南林浪子) ( ) 信誉:100 2005-1-11 14:16:40 得分:2
 
关注!

Top
回复人: zhzhuo(编程混饭吃) ( ) 信誉:100 2005-1-11 14:48:41 得分:2
 
up

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 15:01:48 得分:0
 
qizu(沁竹)我见过,但生成DLL时出现“用户定义类型未定义”,无法生成?

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 15:04:17 得分:0
 
laihongbo524(风铃夜思雨)的也一样,我直接粘贴的,出现“用户定义类型未定义”

Top
回复人: laihongbo524(风铃夜思雨) ( ) 信誉:96 2005-1-11 15:05:44 得分:0
 
楼上,这样吧,简单点

Public Function ConnectDB() As string

ConnectDB = "driver={SQL Server};server=(local);database=数据库名;uid=用户名;pwd=密码"

End Function

2.连接信息

dim Conn
Dim Condl
'连接两部分内容组成字符串      
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
set Condl=Server.CreateObject("ConDBDLL.cs")
conn.open Condl.ConnectDB()
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接失败!"'注释,需要把这几个字翻译成英文。
Response.End
End If

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 15:11:53 得分:0
 
生成3个文件“.exp,.lib”这两个有用吗?

Top
回复人: Newrocky(罗罗) ( ) 信誉:90 2005-1-11 15:15:06 得分:10
 
to laihongbo524(风铃夜思雨) 
你这样有什么用???
还不是一样的把连接串拿出来了?
楼主要求是把连接串封装在DLL中啊!

其实,只要返回CONNECTION对象就可以啦!
'VB部分
'这里的工程需要引用ADODB
Public Function ConnectDB() As ADODB.Connection
Dim conn as new Adodb.connection
STRConnect = "driver={SQL Server};server=(local);database=数据库名;uid=用户名;pwd=密码"
conn.open strConnect
Set ConnectDb=conn
End Function

'ASP部分
dim Conn
Dim Condl
'连接两部分内容组成字符串      
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
set Condl=Server.CreateObject("ConDBDLL.cs")
set conn=Condl.ConnectDB()
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接失败!"'注释,需要把这几个字翻译成英文。
Response.End
End If


Top
回复人: newhandtoo(停留卡) ( ) 信誉:96 2005-1-11 15:15:27 得分:2
 
要dll那个就行了

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 15:38:09 得分:0
 
我用的Access数据库,连接失败,注册了组件,重起了机子,但是连接失败!
Public Function ConnectDB() As Variant

ConnectDB = "DBQ=" & server.mappath("abc.mdb") & ";DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=abc"

End Function

dim Conn
Dim Condl
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
set Condl=Server.CreateObject("ConDBDLL.cs")
conn.open Condl.ConnectDB()
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "ERR"
Response.End
End If

Top
回复人: mymyal123(风之森) ( ) 信誉:100 2005-1-11 15:38:19 得分:2
 
学习

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 15:43:57 得分:0
 
Newrocky(罗罗)的出现“用户定义类型未定义”

Top
回复人: tfhui928(tengfei) ( ) 信誉:95 2005-1-11 16:01:18 得分:2
 
关注

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 16:01:46 得分:0
 
这是错误代码:
服务器对象 错误 'ASP 0177 : 800401f3' 

Server.CreateObject 失败 

/index1.asp,行12 

无效的 ProgID。


Top
回复人: cncca(来个可乐) ( ) 信誉:100 2005-1-11 16:04:20 得分:2
 
组件未注册???

Top
回复人: mymyal123(风之森) ( ) 信誉:100 2005-1-11 16:07:32 得分:2
 
数据库连接失败

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 16:09:28 得分:0
 
注册了

Top
回复人: bignobig() ( ) 信誉:100 2005-1-11 16:48:49 得分:0
 
laihongbo524(风铃夜思雨) 
好了,好了!!!
大家接分了!!!

Top

该问题已经结贴 ,得分记录: tatty_bad (2)、 laihongbo524 (60)、 mackyliu (2)、 qizu (10)、 fronm (2)、 hoggio_1980 (2)、 zhzhuo (2)、 Newrocky (10)、 newhandtoo (2)、 mymyal123 (2)、 tfhui928 (2)、 cncca (2)、 mymyal123 (2)、