关于OleDb.OleDbConnection对象释放问题

hy_david 2002-03-21 11:59:56
假如说我定义了这样一个语句:
Private Conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(ConnStr)

Conn对象该怎样释放才算合理呢?

我测试过:1。只用set conn = nothing
对象能释放,但要过几分钟才行。
2。用conn.close() 好象也不能马上释放,而且在返回OleDbDataReader时会出错,


我希望:1。调用的接口能够调用一个就释放一个连接。
2。有同一个组件里,不会因连续调用了两个接口就产生两个连接。


请各位多指都教 ,它苦我多时,我快发疯了!
...全文
462 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hy_david 2002-03-26
  • 打赏
  • 举报
回复
还是非常感谢 windfun(风之游侠) 和 Wesely(无奈太多) 两位帮我解决问题!
分数当然照送!!!
hy_david 2002-03-26
  • 打赏
  • 举报
回复
情况还是老样了,
当我用下面语句:
If rstResult.Read() Then
strvalue = rstResult.Item(1)
End If
读时就报个:
additional information:Invalid attempt to Read when reader is closed
信息。
hy_david 2002-03-22
  • 打赏
  • 举报
回复
你这种是分开来的关闭对象的,也是方法之一,

我所说的Close()就也出错,是如下面代码:
Try
'运行SQL语句
Comd = New OleDb.OleDbCommand(strSQL, Conn)
Comd.CommandTimeout = 10
GetResult = Comd.ExecuteReader()

Comd.Connection = Nothing
Comd = Nothing
Conn.close()
Conn = Nothing

Exit Function

Catch e As Exception

Comd = Nothing
Conn.close()
Conn = Nothing
GetResult = Nothing
End Try


不信楼上的兄弟可以试试,我是在不可能这样使用Close()的吧
Wesely 2002-03-22
  • 打赏
  • 举报
回复
Try
'运行SQL语句
Comd = New OleDb.OleDbCommand(strSQL, Conn)
Comd.CommandTimeout = 10
GetResult = Comd.ExecuteReader()

Catch e As Exception
label1.text="有错,程序将自动关闭数据库连接"
finally
Comd.Connection = Nothing
Comd = Nothing
Conn.close()
Conn = Nothing
End Try

windfun 2002-03-22
  • 打赏
  • 举报
回复
改成这样试试:
Try
'运行SQL语句
Comd = New OleDb.OleDbCommand(strSQL, Conn)
Comd.CommandTimeout = 10
GetResult = Comd.ExecuteReader()

Comd.Connection = Nothing
Comd = Nothing
Conn.close()
Conn = Nothing

Exit Function

Catch e As Exception
label1.text="有错,程序将自动关闭数据库连接"
finally
Conn.close()
conn.dispose()
End Try


finally语句主要是用来执行清理代码语句的

windfun 2002-03-21
  • 打赏
  • 举报
回复
用conn.close()就行啦,至于OleDbDataReader时出错,应该是你代码有问题,给一个我写的完整例子给你,立刻就能关闭连接

<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.OleDb" %>
<Script Runat="Server">
Dim dr As OleDbDataReader
Dim myconn As oledbconnection

Sub page_load(obj As object,e As eventargs)
myconn = New oledbconnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&server.MapPath("DataBase\db1.mdb")&"")
myconn.open()
Dim mycomm As New oledbcommand("Select * from BookMark",MyConn)
dr = MyComm.ExecuteReader()
End Sub

Sub page_unload(obj As object,e As eventargs)
myconn.close
End sub

</script>
<html>
<head>
<title></title>
</head>
<body>
<b>DataReader演示</b>
<table border=1>
<tr bgcolor="#aaaadd"><td>网站名</td><td>网址</td><td>介绍</td></tr>
<%
While dr.Read
%>
<tr><td><%=dr("SiteName")%></td><td><%=dr("URL")%></td><td><%=dr("Comment")%></td></tr>
<%
End while
dr.Close()
%>
</table>
</body>
</html>
hy_david 2002-03-21
  • 打赏
  • 举报
回复
各位尽发言啊,不求精确答案,只求参考意见,
你们有什么心得或例子的尽可放下来,我给你们加分就是啦!

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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