我的做法:生成 N 个 DataTable 放入 1 个 DataSet 中,然后关闭连接
解决方案 »
- C#如何删除字符串中的一部分?
- RSAParameters类的各个字段问题
- 关于UDP传输协议问题。希望大家进来捧个场,讨论下!~
- 怎么转换数据库float类型的数据?
- 如何改变弹出的messageBox的弹出位置?
- 如何设置下划线
- 请问,大家如何做.net的排版的?vs下面做排版很难看啊,大家是怎么做的?还有如果我用DW开发.net,怎么在DW里有代码提示功能啊,象VS一样
- 请教怎么写开发计划~~~~~
- ooxml社区,支持ooxml!http://www.ooxml.cn欢迎大家对ooxml投票
- VS2005 C++编译的dll在VS2008中调用出现“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。 (异常来自 HRES”
- 请问windows中的资源管理器显示模式在c#应用程序中怎么实现?
- 如何写一个取得XML某子节点的路径XPATH的方法
数据库连接是“很昂贵的资源”,建议使用完 Connection 后始终将其关闭,以便连接可以返回到池中。
SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户端应用程序提供连接池。
其实A是长期占用资源,而且不会释放资源。
B,据说open/Close并不会太花费资源,原因是因为当一个连接open后是在连接池里做缓冲的。
此时资源释放。如连接的时候才会调用,此时连接的所有其他的初始化东西已经完成。。请大哥们指点。
用完就要关
只在第一次连接要耗点时间
连接池满了要出错的
关闭数据库连接
N个表操作
连接数据库,进行更新
关闭数据库连接。
A) VS B)相当嘛继续请求经验程序员来分析
int start, end;
int i;
string tempstrCon="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;"+
"User ID=scott;Password=tiger;Data Source=dbflat";
string strSQL="select * from dept";
System.Data.OleDb.OleDbConnection myConn=new System.Data.OleDb.OleDbConnection(tempstrCon);
start = System.Environment.TickCount;
myConn.Open();
for(i=0; i<times; i++)
{
DataSet mydt=new System.Data.DataSet();
System.Data.OleDb.OleDbDataAdapter myCommand=new System.Data.OleDb.OleDbDataAdapter(strSQL,myConn);
myCommand.Fill(mydt,"temp");
}
myConn.Close();
end = System.Environment.TickCount;
Console.WriteLine("Time1: " + (end-start)/1000.0 + "Seconds"); start = System.Environment.TickCount;
for(i=0; i<times; i++)
{
myConn.Open();
DataSet mydt=new System.Data.DataSet();
System.Data.OleDb.OleDbDataAdapter myCommand=new System.Data.OleDb.OleDbDataAdapter(strSQL,myConn);
myCommand.Fill(mydt,"temp");
myConn.Close();
}
end = System.Environment.TickCount;
Console.WriteLine("Time2: " + (end-start)/1000.0 + "Seconds");
执行结果:
当times = 100
Time1: 0.511Seconds
Time2: 0.751Seconds当times = 1000
Time1: 4.717Seconds
Time2: 6.249Seconds当times = 10000
Time1: 45.475Seconds
Time2: 49.882Seconds看来A效率高一点,不过相差不大。