VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 581|回复: 3

一个关于SqlDataReader的奇怪问题,急求?????

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-18 11:30:01 | 显示全部楼层 |阅读模式
我在一个页面里用SqlDataReader返回一个字符串,而且我用using来自动关闭SqlDatareader,但是当我的一个页面里有多个这样的SqlDataReader的时候(如10个),就会在数据库里产生10多个线程,塞满我的数据库线程池,搞不明白,还请各位帮帮忙!谢谢
public string BindAdWords(int count,string location)
                {
                        string sql = "SELECT Top " + count + " * FROM AdWords WHERE Location='" + location + "' AND IsCancel=0";
                        string path = System.Configuration.ConfigurationSettings.AppSettings["ReadAdWordsImage"];
                        string link = "";
                        string imagedefault = "";
                        Admin.DB db = new Admin.DB();
using (SqlDataReader dr = db.ExecuteReadSQL(sql))
                        {
                                if (dr.HasRows)
                                {
                                        while(dr.Read())
                                        {
                                                link += "<tr>";
                                                link += "<td align='center'>";
                                                if (Convert.ToString(dr["AdImage"]) == "" || dr["AdImage"] == null)
                                                {
                                                        link += imagedefault;
                                                }
                                                else
                                                {
                                                        link += "<a href='" + dr["WebSite"].ToString() + "' target='_blank'><IMG alt='' src=" + path + dr["AdImage"].ToString() + "></a>";
                                                }
                                        }
                                        link += "</td>";
                                        link += "</tr>";
                                }
                                else
                                {
                                        link += imagedefault;
                                }
return link;
                }
DB:
public SqlDataReader ExecuteReadSQL(string sql)
                {
                        sqlConn = new SqlConnection(connectionString);
                        cmd = new SqlCommand(sql,sqlConn);
                        SqlDataReader dr = null;
                        try
                        {
                                sqlConn.Open();
                                dr = cmd.ExecuteReader();
                        }
                        catch (Exception ex)
                        {
                                HttpContext.Current.Response.Write("<font color='Red'>" + ex.Message.ToString() + "</font>");
                        }
                        return dr;


                }
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-22 20:30:01 | 显示全部楼层
关闭链接了吗?
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-4-23 12:15:01 | 显示全部楼层
用using不是不用显式关闭的吗?它会自动回收连接的啊!
而且我在using里手动加了dr.close()后还是一样的
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-4-23 13:30:01 | 显示全部楼层
而且如果我刷新了页面的话,那样在数据库线程池里又会多几条线程出来,而以前的却不会回收
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表