心境

凡夫取境,智者取心。心境双亡,乃是真法。
随笔 - 81, 评论 - 402, 引用 - 0

导航

关于

xinyu出没于山水之间,信服读万卷书不如行万里路之道理,并遍寻各山之高人雅士,欲求赐人间正道,廿二载而不可得,始悟人间正道存乎其心。乃有云:人心皆谓道也!

标签

每月存档

最新留言

广告

 

最近很忙,也没有什么感想,结果导致很久没有更新 Blog 了。

 

Sir说发表是最好的记忆(原话是什么?我记不太清了),所以准备把自己代码中的一些细节记录下来,以便和大家分享,有什么错误或理解不当之处也好请大家指正。

 

关于 Adapter 的连接

 

……

System.Data.OleDb.OleDbAdapter ada1 = new System.Data.OleDb.OleDbAdapter(strSql, strCon);

System.Data.OleDb.OleDbAdapter ada2 = new System.Data.OleDb.OleDbAdapter(strSql, strCon);

System.Data.OleDb.OleDbAdapter adaN = new System.Data.OleDb.OleDbAdapter(strSql, strCon);

 

如果期望使用同一个连接来创建各个 Adapter 对象,恐怕会让您失望,.Net 无法准确判断您的意图(猛一看,想必就算是人也无法得知上面代码段的作者准确的想法)。所以,.Net采取了最直接的办法,为每个 Adapter 创建一个连接(Connection)。为了达到使用同一个 Connection 创建 Adapter 的目的,采取了如下代码:

 

……

System.Data.OleDb.OleDbConnection objCon = new System.Data.OleDb.OleDbConnection(strCon);

System.Data.OleDb.OleDbAdapter ada1, ada2, adaN;

ada1 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

ada2 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

adaN = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

 

System.Data.DataSet dataset = new System.Data.DataSet();

ada1.Fill(dataset);

ada2.Fill(dataset);

adaN.Fill(dataset);

 

虽然没有显示调用 objCon.Open() 但上面代码段依然能正常运行,因为 .Net Adapter 上自动打开了连接,但是在效率方面,上面的代码段不够理想。由于没有显示 objCon.Open() 方法调用(没有已打开的连接),造成在调用 Fill 方法的过程中,.Net 频繁的打开、关闭 Connection,从而影响了性能。如果在 Fill 前,存在打开的连接,在调用完成后 .Net 并不会关闭该连接。所以,只要对 Open 进行显示调用即可解决该问题。

 

……

System.Data.OleDb.OleDbConnection objCon = new System.Data.OleDb.OleDbConnection(strCon);

objCon.Open();

 

System.Data.OleDb.OleDbAdapter ada1, ada2, adaN;

ada1 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

ada2 = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

adaN = new System.Data.OleDb.OleDbAdapter(strSql, objCon);

 

System.Data.DataSet dataset = new System.Data.DataSet();

ada1.Fill(dataset);

ada2.Fill(dataset);

adaN.Fill(dataset);

 

objCon.Close();

 

……

打印 | 张贴于 2004-05-17 16:16:00 | Tag:.Net

对不起,本博客主人暂时禁止大家查看或者发表评论,请查看其它博客内容.

Powered by: Joycode.MVC引擎 0.5.2.0