用asp recordsett 出问题:连接无法用于此操作,在此上下文中它可能已被关闭或无效,新手

急!vb实时错误“3709“连接无法用于执行此操作,在此上下文中他可能已经被关闭或无效_百度知道vb中下拉框错误显示连接无法执行此操作,在此上下文中它可能已被关闭或无效_百度知道连接无法用于执行此操作,在此上下文中它可能已被关闭或无效解决方案 - VC/MFC当前位置:& &&&连接无法用于执行此操作,在此上下文中它可能已被关连接无法用于执行此操作,在此上下文中它可能已被关闭或无效解决方案&&网友分享于:&&浏览:0次连接无法用于执行此操作,在此上下文中它可能已被关闭或无效在获取数据库记录集的时候出现了这个错误
”连接无法用于执行此操作,在此上下文中它可能已被关闭或无效“,
我是新建了一个数据库连接类
以下是数据库类的具体代码:
void&ADOConn::OnInitADOConn()
//初始化OLE/COM库环境
&&&&::CoInitialize(NULL);
//创建connection对象
m_pConnection.CreateInstance("ADODB.Connection"); &&&
//设置连接字符串
_bstr_t&strConnect="uid=;pwd=;DRIVER={Microsoft&Access&Driver&(*.mdb)};DBQ=dB1.";
//SERVER和UID,PWD的设置根据实际情况来设置
m_pConnection-&Open(strConnect,"","",adModeUnknown);
//捕捉异常*/
HRESULT&m_pH
CADOdatabaseDlg&mainD
//创建connection对象
m_pHresult&=&m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(m_pHresult))
switch(mainDlg.m_testMethodNum)
&&&case&0:
&&&m_pHresult&=&m_pConnection-&Open("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source='D:\\横移动态检测数据包\\仿真.mdb'","","",adModeUnknown);
&&&case&1:
&&&m_pHresult&=&m_pConnection-&Open("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source='D:\\横移动态检测数据包\\在线.mdb'","","",adModeUnknown);
&&&case&2:
&&&&m_pHresult&=&m_pConnection-&Open("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source='D:\\横移动态检测数据包\\同步.mdb'","","",adModeUnknown);
&&&case&3:
&&&&m_pHresult&=&m_pConnection-&Open("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source='D:\\横移动态检测数据包\\激光.mdb'","","",adModeUnknown);
&&&case&4:
&&&&m_pHresult&=&m_pConnection-&Open("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source='D:\\横移动态检测数据包\\光栅.mdb'","","",adModeUnknown);
&&&case&5:
&&&&m_pHresult&=&m_pConnection-&Open("Provider=Microsoft.Jet.OLEDB.4.0;Data&Source='D:\\横移动态检测数据包\\平面运动.mdb'","","",adModeUnknown);
&&&default:
//连接数据库
catch(_com_error&e)
//显示错误信息
AfxMessageBox(e.Description());
void&ADOConn::ExitConnect()
//关闭记录集和连接
if(m_pRecordset-&State&==&adStateOpen&)
m_pRecordset-&Close();
if(m_pConnection-&State&==&adStateOpen)
m_pConnection-&Close();
//释放环境
::CoUninitialize();
_RecordsetPtr&&ADOConn::GetRecordSet(_bstr_t&bstrSQL)
OnInitADOConn();
if(m_pRecordset&==&NULL)
&&&&m_pRecordset.CreateInstance(__uuidof(Recordset));
&&&&&&&&&&&&m_pRecordset-&Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
&&&&catch(_com_error&e)
AfxMessageBox(e.Description());
return&m_pR
我在主窗口中是这样调用的:
&&&&sql.Format("select&*&from&MSysObjects&where&type=1&and&flags=0&and&DateCreate&&=#%s#&and&DateCreate&&=#%s#&",s1,s2);
&&&_RecordsetPtr&pRecordset&=&m_AdoConn.GetRecordSet((_bstr_t)sql);
当我执行到GetRecord函数的m_pRecordset-&Open()这一句的时候,就报错,请问有没有人能我看看这是什么问题,我已经调试了好久了,谢谢------解决方案--------------------CoInitialize不需要重复调用,只需要在程序初始化的时候调用一次就可以了。
CoUninitialize也是的,在程序结束的时候调用一次就可以了。
把m_pRecordset做成临时变量再试试。------解决方案--------------------我前段时间遇到和楼主一样的问题,我说一下我的情况和解决办法,看楼主是不是可以借鉴一下。
&&我在主窗口中写的打开数据库的连接,此时的智能指针m_pRecordset-&Open当然是没有问题的。
&&我在子窗口中也要用到数据库的查询,我当时用的是是一个新的_RecordsetPtr&&m_pRecordset,就直接-&open,
没有重新连接数据库。RecordsetPtr&&m_pRecordset这个智能指针是操作结果集的,所以它的前提是数据库必须连接上。
我在主窗口中是这样调用的:
&&&&sql.Format("select&*&from&MSysObjects&where&type=1&and&flags=0&and&DateCreate&&=#%s#&and&DateCreate&&=#%s#&",s1,s2);
&&&_RecordsetPtr&pRecordset&=&m_AdoConn.GetRecordSet((_bstr_t)sql);
当我执行到GetRecord函数的m_pRecordset-&Open()这一句的时候,就报错。
楼主犯的错和我当初一样,一个新的_RecordsetPtr&&m_pRecordset,就直接-&open,你看一下是不是你在主窗口中并没有连接数据库?
虽然我也不是很清楚为什么,但是貌似主窗口和子窗口中数据库的连接是不相关的,你必须重新连接,再用_RecordsetPtr&&m_pRecordset
去操作结果集。我后来在子窗口和主窗口中都各自连接数据库,就好了!
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有ADODB.Recordset 错误 &800a0e7d& 连接无法用于执行此操作。在此上下文中它可能已被关闭或无效。的处理办法
ADODB.Recordset 错误 &800a0e7d& 连接无法用于执行此操作。在此上下文中它可能已被关闭或无效。的处理办法
问题如下:
ADODB.Recordset 错误 '800a0e7d'
连接无法用于执行此操作。在此上下文中它可能已被关闭或无效。
/edit/ewebeditor.asp,行 209
&' 初始化数据库连接&Call DBConnBegin()
&sSql = "select * from ewebeditor_style where s_name='" & sStyleName & "'"&oRs.open sSql, oConn, 0, 1&& (此外为209行)&If Not oRs.Eof Then处理办法:
你找到edit目录下的include目录下的Startup.asp这个文件,然后把下面的代码复制替换掉里面的代码;&
&%@ Language=VBScript CODEPAGE=936%&&% Option Explicit %&&%
' ============================================' 常用全局变量' ============================================' 数据库对象Dim oConn, oRs, sSql
' ============================================' 初始数据处理' ============================================' 执行每天只需处理一次的事件'Call BrandNewDay()
' 初始化数据库连接'Call DBConnBegin()
' ********************************************' 以下为初始函数' ********************************************' ============================================' 执行每天只需处理一次的事件' ============================================Sub BrandNewDay()&Dim sDate, y, m, d, w&Dim sDateChinese&sDate = Date()&If Application("date_today") = sDate Then Exit Sub
&y = CStr(Year(sDate))&m = CStr(Month(sDate))&If Len(m) = 1 Then m = "0" & m&d = CStr(Day(sDate))&If Len(d) = 1 Then d = "0" & d&w = WeekdayName(Weekday(sDate))&sDateChinese = y & "年" & m & "月" & d & "日&" & w
&Application.Lock&Application("date_today") = sDate&Application("date_chinese") = sDateChinese&&'今天的中文样式&Application.UnlockEnd Sub
' ********************************************' 以下为数据库相关函数' ********************************************' ============================================' 初始化数据库连接对象' 使用原则:最迟调用,最早释放' ============================================Sub DBConnBegin()&' 如果数据库对象已打开,不要再打开&If IsObject(oConn) = True Then Exit Sub
&' 你可以不需要打开数据库连接对象而直接打开记录集对象,但如果你需要打开多个记录集对象的话,效率是很低的。&' 如果你不创建一个数据库连接对象,ADO会在每个记录集打开时自动创建一个新的数据库连接对象,就算你用的是相同的SQL语句。&Set oConn = Server.CreateObject("ADODB.Connection")
&On Error Resume Next&' Access数据库&oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/ewebeditor.mdb")&' SQL Server 2000数据库&'oConn.Open "Provider=SQLOLEDB.1;Server=UID=PWD=123456;Database=ewebeditor"&&If Err.Number & 0 Then&&' 显示错误信息,并且发送邮件通知管理员&&'Call DBConnError(Err)&&&&' 完全地退出正在运行的脚本&&Response.End&End If
&' 创建一个记录集&Set oRs = Server.CreateObject( "ADODB.Recordset" )End Sub
' ============================================' 释放数据库连接对象' ============================================Sub DBConnEnd()&On Error Resume Next&oRs.Close&Set oRs = Nothing&oConn.Close&Set oConn = NothingEnd Sub
' ********************************************' 以下为常用函数' ********************************************' ============================================' 错误返回处理' ============================================Sub Go_Error(str)&Call DBConnEnd()&Response.Write "&script language=javascript&alert('" & str & "\n\n系统将自动返回前一页面...');history.back();&/script&"&Response.EndEnd Sub
' ============================================' 格式化时间(显示)' 参数:n_Flag'&1:"yyyy-mm-dd hh:mm:ss"'&2:"yyyy-mm-dd"'&3:"hh:mm:ss"'&4:"yyyy年mm月dd日"'&5:"yyyymmdd"' ============================================Function Format_Time(s_Time, n_Flag)&Dim y, m, d, h, mi, s&Format_Time = ""&If IsDate(s_Time) = False Then Exit Function&y = cstr(year(s_Time))&m = cstr(month(s_Time))&If len(m) = 1 Then m = "0" & m&d = cstr(day(s_Time))&If len(d) = 1 Then d = "0" & d&h = cstr(hour(s_Time))&If len(h) = 1 Then h = "0" & h&mi = cstr(minute(s_Time))&If len(mi) = 1 Then mi = "0" & mi&s = cstr(second(s_Time))&If len(s) = 1 Then s = "0" & s&Select Case n_Flag&Case 1&&' yyyy-mm-dd hh:mm:ss&&Format_Time = y & "-" & m & "-" & d & " " & h & ":" & mi & ":" & s&Case 2&&' yyyy-mm-dd&&Format_Time = y & "-" & m & "-" & d&Case 3&&' hh:mm:ss&&Format_Time = h & ":" & mi & ":" & s&Case 4&&' yyyy年mm月dd日&&Format_Time = y & "年" & m & "月" & d & "日"&Case 5&&' yyyymmdd&&Format_Time = y & m & d&End SelectEnd Function
' ============================================' 把字符串进行HTML解码,替换server.htmlencode' 去除Html格式,用于显示输出' ============================================Function outHTML(str)&Dim sTemp&sTemp = str&outHTML = ""&If IsNull(sTemp) = True Then&&Exit Function&End If&sTemp = Replace(sTemp, "&", "&")&sTemp = Replace(sTemp, "&", "&")&sTemp = Replace(sTemp, "&", "&")&sTemp = Replace(sTemp, Chr(34), "&")&sTemp = Replace(sTemp, Chr(10), "&br&")&outHTML = sTempEnd Function
' ============================================' 去除Html格式,用于从数据库中取出值填入输入框时' 注意:value="?"这边一定要用双引号' ============================================Function inHTML(str)&Dim sTemp&sTemp = str&inHTML = ""&If IsNull(sTemp) = True Then&&Exit Function&End If&sTemp = Replace(sTemp, "&", "&")&sTemp = Replace(sTemp, "&", "&")&sTemp = Replace(sTemp, "&", "&")&sTemp = Replace(sTemp, Chr(34), "&")&inHTML = sTempEnd Function
' ============================================' 检测上页是否从本站提交' 返回:True,False' ============================================Function IsSelfRefer()&Dim sHttp_Referer, sServer_Name&sHttp_Referer = CStr(Request.ServerVariables("HTTP_REFERER"))&sServer_Name = CStr(Request.ServerVariables("SERVER_NAME"))&If Mid(sHttp_Referer, 8, Len(sServer_Name)) = sServer_Name Then&&IsSelfRefer = True&Else&&IsSelfRefer = False&End IfEnd Function
' ============================================' 得到安全字符串,在查询中使用' ============================================Function Get_SafeStr(str)&Get_SafeStr = Replace(Replace(Replace(Trim(str), "'", ""), Chr(34), ""), ";", "")End Function
' ============================================' 取实际字符长度' ============================================Function Get_TrueLen(str)&Dim l, t, c, i&l = Len(str)&t = l&For i = 1 To l&&c = Asc(Mid(str, i, 1))&&If c & 0 Then c = c + 65536&&If c & 255 Then t = t + 1&Next&Get_TrueLen = tEnd Function
' ============================================' 判断是否安全字符串,在注册登录等特殊字段中使用' ============================================Function IsSafeStr(str)&Dim s_BadStr, n, i&s_BadStr = "'  &&&?%,;:()`~!@#$^*{}[]|+-=" & Chr(34) & Chr(9) & Chr(32)&n = Len(s_BadStr)&IsSafeStr = True&For i = 1 To n&&If Instr(str, Mid(s_BadStr, i, 1)) & 0 Then&&&IsSafeStr = False&&&Exit Function&&End If&NextEnd Function
另外,你找一下edit/db/ewebeditor.mdb这个文件是否存在
不区分大小写匿名
相关知识略懂社热议等待您来回答
网页制作领域专家
& &SOGOU - 京ICP证050897号ADODB.Recordset 错误 '800a0e7d' 连接无法用于执行此操作。在此上下文中它可能已被关闭或无效 eWebEditor/ewebeditor.asp,行 230
[问题点数:20分,结帖人aijiyigezi]
ADODB.Recordset 错误 '800a0e7d' 连接无法用于执行此操作。在此上下文中它可能已被关闭或无效 eWebEditor/ewebeditor.asp,行 230
[问题点数:20分,结帖人aijiyigezi]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 asp recordset 的文章

 

随机推荐