数据库连接关闭不够快? [英] DB connections not closed fast enough?

查看:78
本文介绍了数据库连接关闭不够快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在快速耗尽可用的数据库连接以及下面的代码。

我喜欢认为我正在关闭所有内容,但是我看着
一旦getIDs方法发挥作用,
连接就会响起。

有没有人看到任何明显的东西?这几乎就像我的代码不能关闭

a数据库连接一样快,它可以打开它...


感谢您的帮助!


--Brent

========================== ======

代码片段

========================== ======

//创建数组字符串后[] ids


for(int i = 0; i< 50; i ++)

{

string theseids = getIDs(Int32.Parse(ids [i]));


if(theseids!=" ; 0")

{

Response.Write(cusips.ToString());

}


}


公共字符串getIDs(int id)

{

StringBuilder ids = new StringBuilder();


//设置sql连接& sql语句


myConn.Open(); //打开连接


//设置datareader并循环遍历行,

//每个附加到StringBuilder

//循环


if(ids.ToString()。长度> 0)

{

返回ids.ToString( );

}

其他

{

返回" 0" ;;

}


if(myConn!= null){myConn.Dispose();}


}

解决方案

一种不完整的代码片段,但在你处理它之前如何关闭你的连接




-


Andrew Robinson
www.binaryocean .com
www.bellinghamdotnet.org

布伦特 <"" b b i g l e r \@ y a h o o。 c o m>在消息中写道

新闻:11 ************* @ corp.supernews.com ...

我快跑了超出可用的数据库连接与下面的代码。我想,当我继续关注时,我想要关闭所有内容,但是当方法getIDs发挥作用时,我会立即看到
连接。
有没有人看到任何明显的东西?这几乎就像我的代码不能像打开它一样快地关闭数据库连接......

感谢您的帮助!

--Brent

================================
代码片段
================================
//创建数组字符串[] id后

for(int i = 0; i< 50; i ++)
{
string theseids = getIDs(Int32.Parse(ids [i]));

if(theseids!=" 0")
{
Response.Write(cusips.ToString());
}

}

公共字符串getIDs(int id)
{String> StringBuilder ids = new StringBuilder();

//设置sql连接& sql语句

myConn.Open(); //打开连接
//设置datareader并循环遍历行,
//附加到每个
//循环的StringBuilder

如果(ids.ToString()。长度> 0)
{
返回ids.ToString();
}
其他
{
返回" 0"
}
如果(myConn!= null){myConn.Dispose();}

}



嗯...尝试过,没有运气......


完整的代码,不是更多,在这里:


======================================= =========== =

public void writeIDs()

{


StringBuilder sbsql = new StringBuilder();


//获取我们想要查看的数组。

string [] filingIDs = getFilingIDs();


for(int i = 0; i< 50; i ++)

{

string theseids = getIDs(Int32.Parse(filingIDs [i ]));

if(theseids!=" 0")

{

output(theseids.ToString());

}


}


}

公共字符串getIDs(int filingid)

{

StringBuilder idlist = new StringBuilder();

string sql =" select thisid from holdings where thisid =" + filingid;


MySqlConnection myConn;

myConn = new

MySqlConnection(ConfigurationSettings.AppSettings [" connString"]);


MySqlCommand myCommand = new MySqlCommand(sql,myConn);

myConn.Open();


MySqlDataReader dr = myCommand.ExecuteReader();


if(dr.HasRows)

{

while(dr.Read())

{

if(dr [" thisid"]。ToString()。Length> 0)

{

idlist.Append("''" + dr [" thisid"]。ToString()+"'',") ; $ / b $ b $

}

int thislength = idlist.ToString()。长度;

if(thislength> 0)

{

返回idlist.ToString()。子串(0,thislength);

}

其他

{

返回" 0" ;;

}

if(myConn!= null){myConn.Close(); myConn.Dispose();}


}


public string [] getFilingIDs()

{

StringBuilder ID = new StringBuilder();

string sql =" select filingid from filings where filing_type = 1 and

parseid> 0 limit 100" ;;

MySqlConnection myConn = new

MySqlConnection(ConfigurationSettings.AppSettings [" connString"]);

MySqlCommand myCommand =新的MySqlCommand(sql,myConn);


myConn.Open();


MySqlDataReader dr = myCommand.ExecuteReader();


if(dr.HasRows)

{

while(dr.Read())

{

IDs.Append(dr [" filingid"]。ToString()+",");


}

}

int filingIDLength = filingIDs.ToString()。Length-1;

返回filingIDs.ToString()。子串(0,filingIDLength).S plit('' ,'');

if(myConn!= null){myConn.Close(); myConn.Dispose();}

}

===========================

Andrew Robinson写道:

种类一个不完整的代码片段,但是在你处理它之前关闭你的连接怎么样?



Mayb这些联系正在汇集。


" Brent" <"" b b i g l e r \@ y a h o o。 c o m>在消息中写道

新闻:11 ************* @ corp.supernews.com ...

我快跑了超出可用的数据库连接与下面的代码。我想,当我继续关注时,我想要关闭所有内容,但是当方法getIDs发挥作用时,我会立即看到
连接。
有没有人看到任何明显的东西?这几乎就像我的代码不能像打开它一样快地关闭数据库连接......

感谢您的帮助!

--Brent

================================
代码片段
================================
//创建数组字符串[] id后

for(int i = 0; i< 50; i ++)
{
string theseids = getIDs(Int32.Parse(ids [i]));

if(theseids!=" 0")
{
Response.Write(cusips.ToString());
}

}

公共字符串getIDs(int id)
{String> StringBuilder ids = new StringBuilder();

//设置sql连接& sql语句

myConn.Open(); //打开连接
//设置datareader并循环遍历行,
//附加到每个
//循环的StringBuilder

如果(ids.ToString()。长度> 0)
{
返回ids.ToString();
}
其他
{
返回" 0"
}
如果(myConn!= null){myConn.Dispose();}

}



I''m quickly running out of available db connections with the code below.
I like to think I''m closing everything as I go along, but I watch the
connections shoot up as soon as the the method getIDs comes into play.
Does anyone see anything obvious? It''s almost as if my code can''t close
a DB connection as fast as it can open it...

Thanks for any help!

--Brent
================================
Code Fragment
================================
//after creating array string[] ids

for(int i = 0;i < 50;i++)
{
string theseids = getIDs(Int32.Parse(ids[i]));

if (theseids != "0")
{
Response.Write(cusips.ToString());
}

}

public string getIDs(int id)
{
StringBuilder ids = new StringBuilder();

//Set up sql connection & sql statement

myConn.Open(); //open connection

//set up datareader and loop thru rows,
//appending to the StringBuilder at each
//loop

if (ids.ToString().Length > 0)
{
return ids.ToString();
}
else
{
return "0";
}

if(myConn != null){myConn.Dispose();}

}

解决方案

Kind of an incomplete code snippet, but how about closing your connection
before you dispose it?

--

Andrew Robinson
www.binaryocean.com
www.bellinghamdotnet.org
"Brent" <""b b i g l e r \"@ y a h o o . c o m"> wrote in message
news:11*************@corp.supernews.com...

I''m quickly running out of available db connections with the code below. I
like to think I''m closing everything as I go along, but I watch the
connections shoot up as soon as the the method getIDs comes into play.
Does anyone see anything obvious? It''s almost as if my code can''t close a
DB connection as fast as it can open it...

Thanks for any help!

--Brent
================================
Code Fragment
================================
//after creating array string[] ids

for(int i = 0;i < 50;i++)
{
string theseids = getIDs(Int32.Parse(ids[i]));

if (theseids != "0")
{
Response.Write(cusips.ToString());
}

}

public string getIDs(int id)
{
StringBuilder ids = new StringBuilder();

//Set up sql connection & sql statement

myConn.Open(); //open connection

//set up datareader and loop thru rows,
//appending to the StringBuilder at each
//loop

if (ids.ToString().Length > 0)
{
return ids.ToString();
}
else
{
return "0";
}

if(myConn != null){myConn.Dispose();}

}



Hmmm...tried that, with no luck...

The full code, which isn''t much more, is here:

================================================== =
public void writeIDs()
{

StringBuilder sbsql = new StringBuilder();

//get array of ids we want to look at.
string[] filingIDs = getFilingIDs();

for(int i = 0;i < 50;i++)
{
string theseids = getIDs(Int32.Parse(filingIDs[i]));
if (theseids!= "0")
{
output(theseids.ToString());
}

}

}
public string getIDs(int filingid)
{
StringBuilder idlist = new StringBuilder();
string sql = "select thisid from holdings where thisid = "+ filingid;

MySqlConnection myConn;
myConn = new
MySqlConnection(ConfigurationSettings.AppSettings["connString"]);

MySqlCommand myCommand = new MySqlCommand(sql, myConn);

myConn.Open();

MySqlDataReader dr = myCommand.ExecuteReader();

if (dr.HasRows)
{
while (dr.Read())
{
if (dr["thisid"].ToString().Length > 0)
{
idlist.Append("''" + dr["thisid"].ToString()+"'',");
}
}
}
int thislength= idlist.ToString().Length;
if (thislength> 0)
{
return idlist.ToString().Substring(0,thislength);
}
else
{
return "0";
}
if(myConn != null){myConn.Close();myConn.Dispose();}

}

public string[] getFilingIDs()
{
StringBuilder IDs = new StringBuilder();
string sql = "select filingid from filings where filing_type = 1 and
parseid > 0 limit 100 ";
MySqlConnection myConn = new
MySqlConnection(ConfigurationSettings.AppSettings["connString"]);
MySqlCommand myCommand = new MySqlCommand(sql, myConn);

myConn.Open();

MySqlDataReader dr = myCommand.ExecuteReader();

if (dr.HasRows)
{
while (dr.Read())
{
IDs.Append(dr["filingid"].ToString()+",");

}
}
int filingIDLength = filingIDs.ToString().Length-1;
return filingIDs.ToString().Substring(0,filingIDLength).S plit('','');
if(myConn != null){myConn.Close();myConn.Dispose();}
}
===========================
Andrew Robinson wrote:

Kind of an incomplete code snippet, but how about closing your connection
before you dispose it?



Maybe the connections are pooling.

"Brent" <""b b i g l e r \"@ y a h o o . c o m"> wrote in message
news:11*************@corp.supernews.com...

I''m quickly running out of available db connections with the code below. I
like to think I''m closing everything as I go along, but I watch the
connections shoot up as soon as the the method getIDs comes into play.
Does anyone see anything obvious? It''s almost as if my code can''t close a
DB connection as fast as it can open it...

Thanks for any help!

--Brent
================================
Code Fragment
================================
//after creating array string[] ids

for(int i = 0;i < 50;i++)
{
string theseids = getIDs(Int32.Parse(ids[i]));

if (theseids != "0")
{
Response.Write(cusips.ToString());
}

}

public string getIDs(int id)
{
StringBuilder ids = new StringBuilder();

//Set up sql connection & sql statement

myConn.Open(); //open connection

//set up datareader and loop thru rows,
//appending to the StringBuilder at each
//loop

if (ids.ToString().Length > 0)
{
return ids.ToString();
}
else
{
return "0";
}

if(myConn != null){myConn.Dispose();}

}



这篇关于数据库连接关闭不够快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆