关于数据库可不可以频繁连接关闭

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:19:58
asp.net2.0(C#)有如下一段代码:请教高人,若是for语句循环次数较多,则如此频繁的打开/关闭数据库势必会对运行效率造成影响,大家说对吗?
foreach (DataRowView myDrv in myView)
{
//要关闭上一次的SQL Server的连接
if (conn.State.ToString()!="Closed"
conn.Close();
.......
.......
conn.Open();
cmd.ExecuteNonQuery();//写入SQL数据库
}
首先感谢大家关心,其实我要实现的是在线把本地excel文件里的记录上传到远程数据库的功能.可能并不需要这么频繁地连接数据库,也许在数据库一直打开的情况下就能一次性导入所有数据.这个只是我在网上看到的一个算法,看到如此频繁地打开关闭数据库我就郁闷,就来问问大家,我对数据库不是很精通,特别是在.net框架下的新特性不是很了解.呵呵,再去看看MSDN,可能还有更好的办法.

为什么不在foreach前打开,在foreache后面再关闭呢,放中间做什么

数据库里可以的.关健是看你的服务器能不能支持这么多的动作而已,一盘的话,有些服务器的运算速度高的,你试试吧.

循环插入??

呵呵,其实有比较好的办法....

我给你一个小例子,只需要连接数据库一次...

protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("server=localhost;uid=ztx;password=123;database=mydb");
con.Open();
SqlCommand cmd = null;
string sql = "";
for (int i = 0; i <= 10; i++)
{
sql+="insert into test values ('" + i + "')";
}
Response.Write(sql);
cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
con.Close();
}

如果你有点数据库基础,那么这个东西挺好办的..

你用open和close只是打开和关闭一个逻辑连接,只消耗的是服务器连接池中一个物理连接

你可以把你要写入数据库的内容写成一个数组,或者是写在一个缓存里,