简单数据库连接问题,在线等,解决立刻给分!!

iamyokel 2003-10-18 06:46:42
一下是我的一段代码,可以正常运行

Sub dzzaddarticlep(cid)
Set conn = Server.CreateObject("ADODB.CONNECTION")
connstr = "DBQ=" + Server.MapPath("/shujuku.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
sqla = "select * From bbsClass"
Set rsa = Server.CreateObject("adodb.recordset")
rsa.open sqla, conn, 1, 1
Do While Not rsa.EOF
Response.Write "<option value='" & rsa("classid") & "'"
If cid <> "" Then
If CLng(cid) = CLng(rsa("classid")) Then
Response.Write " selected"
End If
End If
Response.Write ">" & rsa("classname") & "</option>"
rsa.movenext
Loop
rsa.Close
Set rsa = Nothing
End Sub

我怎么把这一段代码写道全局变量呢?否则每一个function都要写这个,太麻烦了!
Set conn = Server.CreateObject("ADODB.CONNECTION")
connstr = "DBQ=" + Server.MapPath("/shujuku.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr

高手帮忙!!
...全文
58 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamyokel 2003-10-20
  • 打赏
  • 举报
回复
我写了啊,这么写你看对么?

Sub opendb(db)
Set conn = Server.CreateObject("ADODB.CONNECTION")
connstr = "DBQ=" + Server.MapPath("test.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
End Sub

但是调用的时候怎么还是不行?我通过opendb调用的
Dublue 2003-10-20
  • 打赏
  • 举报
回复
你还需写一个连接数据库的函数,其他函数调用时,只需调用此函数即可
iamyokel 2003-10-20
  • 打赏
  • 举报
回复
我也想到过,但是就是提示GetPrivateProfileString错误
另外不会把得到的ini里边的数值设定为全局变量

dublue你有qq 么?108828368 随时恭候!谢谢!!
iamyokel 2003-10-20
  • 打赏
  • 举报
回复
zizaiwang的代码可以运行


虽然没有生成ini文件,但是只有如此了。谢谢大家!谢谢参与的人!ini我再想办法。
zizaiwang 2003-10-20
  • 打赏
  • 举报
回复
代码我看了

'======================子过程/函数结束======================

Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
Set MyScriptingContext = PassedScriptingContext
Set Application = MyScriptingContext.Application
Set Request = MyScriptingContext.Request
Set Response = MyScriptingContext.Response
Set Server = MyScriptingContext.Server
Set Session = MyScriptingContext.Session
Set conn = Server.CreateObject("ADODB.CONNECTION")
connstr = "DBQ=" + Server.MapPath("test.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
End Sub

Public Sub OnEndPage()
Set MyScriptingContext = Nothing
Set Application = Nothing
Set Request = Nothing
Set Response = Nothing
Set Server = Nothing
Set Session = Nothing
Set conn = Nothing
End Sub
liaorui 2003-10-20
  • 打赏
  • 举报
回复
你的意思是不是就是想把Connection对象设置为全局的,那每次就不用都去连接一次库了,对不对?
这样可以在类模块里用一个方法来得到Connection对象呀。
iamyokel 2003-10-20
  • 打赏
  • 举报
回复
老哥啊,我捣鼓了好几天了,实在没辙了

实在不是直接要代码的懒人啊,可是实在是捣鼓不好了!唉

能不能给看看代码啊。谢谢了

asp程序编写我是一点问题没有,但是调用dll我是第一次做,非做不可。这几天头都大了好几圈了@#$%%%&^*$^&%*&

能上qq指点老弟一下么?不会耽误太长时间的,谢谢了!另有重谢!108828368
Dublue 2003-10-20
  • 打赏
  • 举报
回复
在过程外定义global conn as adodb.connection
Dublue 2003-10-20
  • 打赏
  • 举报
回复
第一种要求把conn等设为全局
Dublue 2003-10-20
  • 打赏
  • 举报
回复
单步跟踪一下,看看db,con等是否获得值
iamyokel 2003-10-20
  • 打赏
  • 举报
回复
Sub opendb()
Set conn = Server.CreateObject("ADODB.CONNECTION")
connstr = "DBQ=" + Server.MapPath("test.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
End Sub

Sub test2(cid)
Opendb
sqla = "select * From Class"
Set rsa = Server.CreateObject("adodb.recordset")
rsa.open sqla, conn, 1, 1
Response.Write rsa("classname")
rsa.Close
Set rsa = Nothing
End Sub

这样就是无效的



Sub test1(cid)
Set conn = Server.CreateObject("ADODB.CONNECTION")
connstr = "DBQ=" + Server.MapPath("test.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
sqla = "select * From Class"
Set rsa = Server.CreateObject("adodb.recordset")
rsa.open sqla, conn, 1, 1
Response.Write rsa("classname")
rsa.Close
Set rsa = Nothing
End Sub

这样运行正常
Dublue 2003-10-20
  • 打赏
  • 举报
回复
哪里调用无效?
iamyokel 2003-10-20
  • 打赏
  • 举报
回复
这是sql链接,我的是access的

关键是调用无效,直接写就可以

Dublue 2003-10-20
  • 打赏
  • 举报
回复
server.mappath我没在vb中用过,不知对否,如果是我,就用app.path
在你的应用程序中,最开始的地方,比如form_load,module等调用此函数就行了
Dublue 2003-10-20
  • 打赏
  • 举报
回复
连接时,还需要用户名和密码,举个简单例子:
Public Sub InitDB()
'初始化数据库
'建立数据库连接并打开
strDBName = "dbRecords"
strcnn = "Provider=MSDASQL.1;UID=sa;Data Source=Records;Extended Properties='DSN=dbRecords;DBQ=" & strDBName & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5'"
cnn.Open strcnn, "", ""

'设置记录集
Set rstRec = New ADODB.Recordset
rstRec.CursorType = adOpenKeyset
rstRec.LockType = adLockOptimistic
rstRec.Open "tblRec", cnn, , , adCmdTable
iRecNum = rstRec.RecordCount
End Sub
iamyokel 2003-10-19
  • 打赏
  • 举报
回复
帮忙啊大头!
你没有空间上传么?我送你一个啊,100m的空间,可以么?谢谢!!!

qq 108828368

请指教啊,在线等!

谢谢了大头
iamyokel 2003-10-19
  • 打赏
  • 举报
回复
我试了,怎么提示原来的也错误了啊



asp2dll 错误 '800a005b'

未设置对象变量或 With block 变量

/wzgl/dll/0018/test.asp,行4


拜托了大头,帮人帮到底吧,我真的很吃力啊

我从来没有弄过dll,一直是弄web程序,这是第一次,只要数据库弄上,就没有问题了。谢谢!!


可不可以qq 啊,这么等太累了。谢谢了啊!
Dublue 2003-10-19
  • 打赏
  • 举报
回复
用这个:
'********************************************************************************
'** 函数功能:从ini配置文件中读取指定段名、关键字名的值
'** 调用语法: GetInIKeyValue(SectionName as string,KeyName As String,FileName As String)
'** 参数说明:
'** SectionName :段名
'** KeyName :关键字名
'** FileName :ini文件名包括路径
'** 返 回 值:
'** String :返回关键字值
'** 处理说明:
'** 调用API函数GetPrivateProfileString
'******************************************************************************
Public Function GetInIKeyValue(ByVal SectionName As String, _
ByVal KeyName As String, _
ByVal FileName As String) As String
Dim KeyValue$
Dim strTmp As String

KeyValue$ = String$(512, " ")
GetPrivateProfileString SectionName, KeyName, "", KeyValue$, 512, FileName
strTmp = Trim(KeyValue$)
GetInIKeyValue = Left(strTmp, Len(strTmp) - 1)
End Function

'********************************************************************************
'** 函数功能:从ini配置文件中写入指定段名、关键字名及值
'** 调用语法: SetInIKeyValue(SectionName as string,KeyName As String,KeyValue as string ,FileName As String)
'** 参数说明:
'** SectionName :段名
'** KeyName :关键字名
'** KeyValue :关键字值
'** FileName :ini文件名包括路径
'** 返 回 值:
'** 处理说明:
'** 调用API函数WritePrivateProfileString
'******************************************************************************
Public Sub SetInIKeyValue(ByVal SectionName As String, _
ByVal KeyName As String, _
ByVal KeyValue As String, _
ByVal FileName As String)
Dim lng As Long

lng = WritePrivateProfileString(SectionName, KeyName, KeyValue, FileName)
End Sub
Dublue 2003-10-19
  • 打赏
  • 举报
回复
vb中读取要用到GetPrivateProfileString,WritePrivateProfileString等几个api,可参见
http://expert.csdn.net/Expert/topic/2189/2189110.xml?temp=.7792932
iamyokel 2003-10-19
  • 打赏
  • 举报
回复
是asp,但是写进<!--#include file="conn.inc"-->在dll调用的时候参数无效,也就是无论怎么定义,参数都没有值
加载更多回复(21)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧