执行一次没有问题,循环执行好象进入了死循环,因为没有报错!
在网上也看了例子,但是都没能解决!
DataView dv=systemOb.getRegionByStore(0,int.Parse(Config.regionRank[0]));
DataView dv1;
for(int i=0;i<dv.Count;i++)
{
SqlConnection conn=new SqlConnection(Config.strConn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "getRegion";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Clear();
da.SelectCommand.Parameters.Add("@parentId",int.Parse(dv[i]["id"].ToString()));
da.SelectCommand.Parameters.Add("@rank",int.Parse(Config.regionRank[1])); da.Fill(ds);
dv1=ds.Tables[0].DefaultView;
}
在网上也看了例子,但是都没能解决!
DataView dv=systemOb.getRegionByStore(0,int.Parse(Config.regionRank[0]));
DataView dv1;
for(int i=0;i<dv.Count;i++)
{
SqlConnection conn=new SqlConnection(Config.strConn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "getRegion";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Clear();
da.SelectCommand.Parameters.Add("@parentId",int.Parse(dv[i]["id"].ToString()));
da.SelectCommand.Parameters.Add("@rank",int.Parse(Config.regionRank[1])); da.Fill(ds);
dv1=ds.Tables[0].DefaultView;
}
解决方案 »
- ajax的json问题
- 如何使用SqlPager分页控件
- 英雄们啊!!谁帮我解决这个问题,我顶他一年的贴!两天啦!我还是无法解决!
- 求助:设定了table的<td>宽度,但是还是不能让它换行,为什么?
- 刚开始接触2.0 发现基础问题~
- 我想在DataGrid的超级链接列的一列传两个参数,如test.aspx?id=&username=test的操作,怎么实现比较好呢?
- asp.net网站布局大家一般怎么设计,传授点技巧。。。
- 我网站用的是虚拟主机,那我该怎么使用微软的TreeView控件呢?
- Gridview 合并表头后如何设定宽度?
- 数据库读取到的信息绑定到DropDownList的问题,觉得简单就进来拿分,觉得难就一起学习
- 求教关于TextBox控件的显示问题!
- 求RadControls第三方控件
你可以调试一下,看看你的代码在哪出的问题。
DataView dv1;
SqlConnection conn=new SqlConnection(Config.strConn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "getRegion";
da.SelectCommand.CommandType = CommandType.StoredProcedure; for(int i=0;i<dv.Count;i++)
{
//循環內改變相應參數值即可。 da.SelectCommand.Parameters.Clear();
da.SelectCommand.Parameters.Add("@parentId",int.Parse(dv[i]["id"].ToString()));
da.SelectCommand.Parameters.Add("@rank",int.Parse(Config.regionRank[1])); //這裡有個疑問,樓主循環後所返回的值想如何處理?
//像下面這樣做,得到的結果也只是最後一次循環的值而已...
da.Fill(ds);
dv1=ds.Tables[0].DefaultView;
}
DataView dv=systemOb.getRegionByStore(0,int.Parse(Config.regionRank[0]));
DataView dv1;
SqlConnection conn=new SqlConnection(Config.strConn);
SqlDataAdapter da = new SqlDataAdapter();
for(int i=0;i<dv.Count;i++)
{
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "getRegion";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Clear();
da.SelectCommand.Parameters.Add("@parentId",int.Parse(dv[i]["id"].ToString()));
da.SelectCommand.Parameters.Add("@rank",int.Parse(Config.regionRank[1])); da.Fill(ds);
dv1=ds.Tables[0].DefaultView;
}这段是没有在循环中创建连接的代码,试了也不行
下面的是存储过程:
ALTER PROCEDURE getRegion
(
@parentId as int,
@rank as int
)
AS
if(@parentId<>0)
select * from region where id<>@parentId and parentId=@parentId
else
select * from region where rank=@rank
/* SET NOCOUNT ON */
RETURN
//像下面這樣做,得到的結果也只是最後一次循環的值而已...
da.Fill(ds);
dv1=ds.Tables[0].DefaultView;怎么处理不重要,只要能循环执行存储过程就行了
--------------------------------------------------------------------------
DataView dv=systemOb.getRegionByStore(0,int.Parse(Config.regionRank[0]));
DataView dv1;SqlConnection conn = new SqlConnection(Config.strConn);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "getRegion";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@parentId",SqlDbType.Int);
cmd.Parameters.Add("@rank",SqlDbType.Int);
SqlDataAdapter da = new SqlDataAdapter(cmd);for(int i=0;i<dv.Count;i++)
{
cmd.Parameters[0].Value=dv[i]["id"] as int;
cmd.Parameters[1].Value=int.Parse(Config.regionRank[1]);
da.Fill(ds);
dv1=ds.Tables[0].DefaultView;
}
public void getRegionList()
{ try
{
DataSet ds=new DataSet();
DataView dv1;
string str="";
sql="select * from region where rank="+Config.regionRank[0];
DataView dv=Db.ExecuteSQLForDS(sql).Tables[0].DefaultView;
// DataView dv=systemOb.getRegionByStore(0,int.Parse(Config.regionRank[0]));
SqlConnection conn = new SqlConnection(Config.strConn);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "getRegion";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@parentId",SqlDbType.Int);
cmd.Parameters.Add("@rank",SqlDbType.Int);
SqlDataAdapter da = new SqlDataAdapter(cmd);
for(int i=0;i<dv.Count;i++)
{
str=str+"<tr><td>"+dv[i]["id"]+"</td><td><b>"+dv[i]["name"]+"</b></td><td><a href=regionUpdate.aspx?id="+dv[i]["id"]+">编辑</a></td><td><a href=regionList.aspx?action=del&id="+dv[i]["id"]+">删除</a></td></tr>";
// string sql1="select * from region where rank="+Config.regionRank[1]+" and parentId="+dv[i]["id"];
// DataView dv1=Db.ExecuteSQLForDS(sql1).Tables[0].DefaultView;
// DataView dv1=systemOb.getRegionByStore(int.Parse(dv[i]["id"].ToString()),int.Parse(Config.regionRank[1]));
cmd.Parameters[0].Value=int.Parse(dv[i]["id"].ToString());
cmd.Parameters[1].Value=int.Parse(Config.regionRank[1]); da.Fill(ds);
dv1=ds.Tables[0].DefaultView;
for(int j=0;j<dv1.Count;j++)
{
str=str+"<tr><td>"+dv1[j]["id"]+"</td><td> ├"+dv1[j]["name"]+"</td><td><a href=regionUpdate.aspx?id="+dv1[j]["id"]+">编辑</a></td><td><a href=regionList.aspx?action=del&id="+dv1[j]["id"]+">删除</a></td></tr>";
string sql2="select * from region where rank="+Config.regionRank[2]+" and parentId="+dv1[j]["id"];
DataView dv2=Db.ExecuteSQLForDS(sql2).Tables[0].DefaultView;
// DataView dv2=systemOb.getRegionByStore(int.Parse(dv[j]["id"].ToString()),int.Parse(Config.regionRank[2]));
for(int k=0;k<dv2.Count;k++)
{
str=str+"<tr><td>"+dv2[k]["id"]+"</td><td>  ├"+dv2[k]["name"]+"</td><td><a href=regionUpdate.aspx?id="+dv2[k]["id"]+">编辑</a></td><td><a href=regionList.aspx?action=del&id="+dv2[k]["id"]+">删除</a></td></tr>";
string sql3="select * from region where rank="+Config.regionRank[3]+" and parentId="+dv2[k]["id"];
DataView dv3=Db.ExecuteSQLForDS(sql3).Tables[0].DefaultView;
// DataView dv3=systemOb.getRegionByStore(int.Parse(dv[k]["id"].ToString()),int.Parse(Config.regionRank[3]));
for(int h=0;h<dv3.Count;h++)
{
str=str+"<tr><td>"+dv3[h]["id"]+"</td><td> ├"+dv3[h]["name"]+"</td><td><a href=regionUpdate.aspx?id="+dv3[h]["id"]+">编辑</a></td><td><a href=regionList.aspx?action=del&id="+dv3[h]["id"]+">删除</a></td></tr>";
}
}
}
}
this.regionData.Text=str;
//this.Response.Write(sql);
}
catch(System.Exception ex)
{
Config.errPro(ex);
}
}
是 da.Fill(ds);的问题,因为之前没有用ds.clear(),导致ds无限增长!