多个OLEDBREADER如何共享一个oledbconnection??

QDZZQ 2002-05-21 05:51:02
ado。net很兰
...全文
54 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
QDZZQ 2002-05-22
  • 打赏
  • 举报
回复
执行注释部分会出问题
void intiTree(TreeNode node,String doctype)
{
OleDbCommand cmd=new OleDbCommand("select * from doctype ",(OleDbConnection)Session["dbconnection"]);
OleDbDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
TreeNode tmpNode=new TreeNode();
tmpNode.Text=rd["DocType"].ToString().Trim();
tmpNode.ID=rd["DocType"].ToString().Trim();
DocTree.Nodes.Add(tmpNode);
/************************************************************************************************
OleDbCommand cmd2;
OleDbDataReader rd2;
cmd2=new OleDbCommand("",(OleDbConnection)Session["dbconnection2"]);
cmd2.CommandText="select * from doctype where parenttype='"+rd["DocType"]+"'";
rd2 = cmd2.ExecuteReader();


if (rd2.Read())
{
rd2.Close();
cmd2.Dispose();
String s=rd["doctype"].ToString().ToUpper();
cmd.Dispose();

intiTree(tmpNode,s);
}
else
{
rd2.Close();
cmd2.Dispose();
}
***************************************************************************************/
}
icyer 2002-05-22
  • 打赏
  • 举报
回复
一个OleDbConnection只能有一个打开的OleDbDataReader。
你可以考虑用DataSet来代替OleDbDataReader的处理。
yunhi 2002-05-22
  • 打赏
  • 举报
回复
你可以在global.asax中这样写:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script language="VB" runat="server">

sub Application_OnStart(sender As Object, e As EventArgs)
Dim objConn as New OleDbConnection()
objConn.ConnectionString = ConfigurationSettings.AppSettings("ConnectionString")
Application("yourdblink")=objConn
Application("yourdblink").Open()
end sub

sub Application_OnEnd(sender As Object, e As EventArgs)
Application("yourdblink").close()
Application("yourdblink")=nothing
end sub

sub Session_OnStart(sender As Object, e As EventArgs)
end sub

sub Session_OnEnd(sender As Object, e As EventArgs)
end sub

</script>

在调用oledbconnection对象的时候这样实现:
dim MyComm as OleDbCommand = new OleDbCommand(strsql,Application("yourdblink"))
dim dr as OleDbDataReader = MyComm.ExecuteReader()
'做后别忘了
dr.Close()
dr = nothing
yunhi 2002-05-22
  • 打赏
  • 举报
回复
数据库通道一次只能打开一个,每次你执行完oledbreader,都需要colse和关闭数据库连接,把你的code贴出来吧,我帮你看看。
QDZZQ 2002-05-22
  • 打赏
  • 举报
回复
我是在递归调用时候遇到的这个问题,我不可能每个递归函数里面都新建connection吧????
QDZZQ 2002-05-22
  • 打赏
  • 举报
回复
现在我的问题是Connection可以做成Session或者Application方式,问题是我用两个oledbreader同时连接这个connection,并且嵌套循环时候,提示connection已经有打开发reader连接,不能再用reader了。怎么解决阿???
yunhi 2002-05-22
  • 打赏
  • 举报
回复
或者sql语句这样写:
"select * from doctype where (parenttype<>'"+rd["DocType"]+"')"
yunhi 2002-05-22
  • 打赏
  • 举报
回复
你直接这样写不行吗?
void intiTree(TreeNode node,String doctype)
{
myconnection=(OleDbConnection)Session["dbconnection"];
OleDbCommand cmd=new OleDbCommand("select * from doctype where parenttype='"+rd["DocType"]+"'",myconnection);
OleDbDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
TreeNode tmpNode=new TreeNode();
tmpNode.Text=rd["DocType"].ToString().Trim();
tmpNode.ID=rd["DocType"].ToString().Trim();
DocTree.Nodes.Add(tmpNode);
}
rd.Close();
myconnection.Close();
}
QDZZQ 2002-05-21
  • 打赏
  • 举报
回复
sqlconnection等组件竟然只支持sql server。
olereader竟然会锁定connection,够烂的

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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