读书人

再提treeview有关问题

发布时间: 2012-01-13 22:43:30 作者: rapoo

再提treeview问题
开贴再提问????????
运行提示:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

表结构如下:
ID char 10
DETAIL varchar50
NAME varchar50

以下是我最新的代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;

public partial class Default9 : System.Web.UI.Page
{


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AddTreeView(1, (TreeNode)null);
}


}
protected void AddTreeView(Int64 ID, TreeNode tn)
{

string CustomerDataConnectionString = System.Configuration.ConfigurationSettings.AppSettings[ "ConnectionString "];
SqlConnection objConn = new SqlConnection(CustomerDataConnectionString);

String strCmd = "select DETAIL,NAME from AAAA where ID= " + ID;

SqlCommand objCmd = new SqlCommand();

objCmd.Connection = objConn;
objConn.Open();
objCmd.CommandText = strCmd;

SqlDataReader objDR = objCmd.ExecuteReader();

while (objDR.Read())
{
if (tn == null)
{
TreeNode myNode = new TreeNode();
myNode.Text = objDR[ "DETAIL "].ToString().Trim();
myNode.Value = objDR[ "NAME "].ToString().Trim();


TreeView1.Nodes.Add(myNode);
AddTreeView(Int64.Parse(objDR[ "DETAIL "].ToString().Trim()), (TreeNode)myNode);
}
else
{
TreeNode myNode1 = new TreeNode();
myNode1.Text = objDR[ "DETAIL "].ToString().Trim();
myNode1.Value = objDR[ "NAME "].ToString().Trim();
tn.ChildNodes.Add(myNode1);
AddTreeView(Int64.Parse(objDR[ "DETAIL "].ToString().Trim()), (TreeNode)myNode1);
}
}

objDR.Close();
objConn.Close();
}


}



[解决办法]
楼主使用SqlDataReader时,在建立树的过程中,应用程序一至与数据库保持着连接在,由于网络不稳定所以会导致程序“不稳定,时好时坏”;
建议楼主先将数据取出放到Dataset中,在本地建立树,应该可以避免这种问题!

读书人网 >C#

热点推荐