MYSQL编程:Access 中怎样利用 ADO 硌顾趸蛐薷 M...
无疑希望员工得到系统、有深度的培训,显然MySQL在这一点上还做得很不够。access|ado|紧缩Access中怎样利用ADO硌顾趸蛐薷MSAccess文件?
专题地点:http://access911.net/index.asp?board=4&recordid=71FAB71E
成绩:
Access中怎样利用ADO硌顾趸蛐薷MicrosoftAccess文件?
回覆:
之前利用DAO时,Microsoft有供应CompactDatabaseMethod硌顾MicrosoftAccess文件,RepairDatabaseMethod硇薷此鸹档MicrosoftAccess文件,。但是自从ADO出来以后,仿佛忘了供应绝对的紧缩及修复MicrosoftAccess文件的功效。
如今Microsoft发明了这个成绩了,也供应懂得决办法,不外有版本上的限定!限定申明以下:
ActiveXDataObjects(ADO),version2.1
MicrosoftOLEDBProviderforJet,version4.0
这是Microsoft提出的ADO的延长功效:MicrosoftJetOLEDBProviderandReplicationObjects(JRO)
这个功效在JETOLEDBProviderversion4.0(Msjetoledb40.dll)及JROversion2.1(Msjro.dll)中第一次被提出!
这些需要的DLL文件在您安b了MDAC2.1以后就有了,您能够在以下的网页中下载MDAC的最新版本!
UniversalDataAccessWebSite
鄙人载之前先到VBE界面中反省一下,【援用】中的MicrosoftJetandReplicationObjectsX.Xlibrary假如已是2.1以上的版本,您就能够不必下载了!
在您安b了MDAC2.1或以上的版本以后,您就能够利用ADO来紧缩或修复MicrosoftAccess文件,上面的步骤告知您怎样利用CompactDatabaseMethod来紧缩MicrosoftAccess文件:
1、新建一个新表单,选择VBE中【援用】。
2、到场MicrosoftJetandReplicationObjectsX.Xlibrary,个中(X.X年夜于或即是2.1)。
3、在得当的中央到场以下的程序代码,记得要修正datasource的热菁澳康匚募穆肪叮
DimjroAsjro.JetEngine
Setjro=Newjro.JetEngine
jro.CompactDatabase"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:
wind2.mdb",_来历文件
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:abbc2.mdb;JetOLEDB:EngineType=4"目标文件
在DAO3.60以后,RepairDatabaseMethod已没法利用了,以上的程序代码显现了ADOCompactDatabaseMethod的用法,而它也代替了DAO3.5时的RepairDatabasemethod!
附注:
1、呈现毛病提醒(不克不及实行这项操纵;在低版本的数据库中该版本的特征不成用。)是由于版本号与你的数据库格局不符,请看上面的对比表
引擎版本号
JetOLEDB:EngineType->Jetx.xFormatMDBFiles
1->JET10
2->JET11
3->JET2X
4->JET3X
5->JET4X
2、其他的紧缩修单数据库的工具和办法:
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;240434
固然偶然能够乐成地翻开某些破坏的数据库,但因为索引或表行已破坏,因而数据会见速率要慢良多。能够运转MicrosoftAccess开辟情况中的“修复和紧缩数据库”有用程序来修复破坏的数据库。编程时,您可使用JetandReplicationObjects(JRO)的CompactDatabase办法、JetOLEDB供应程序的IJetCompact::Compact办法,或DataAccessObjects(DAO)的CDaoDatabase::CompactDatabase办法,来完成此目标。
办法二:
Delphi代码(未考证)
//usesComObj,ActiveX
const
SConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=%s;
+JetOLEDB:DatabasePassword=%s;;
functionGetTempPathFileName():string;
var
SPath,SFile:arrayofchar;
begin
GetTempPath(254,SPath);
GetTempFileName(SPath,~SM,0,SFile);
result:=SFile;
DeleteFile(result);
end;
functionCompactDatabase(AFileName,APassWord:string):boolean;
//紧缩与修单数据库,掩盖源文件
var
STempFileName:string;
vJE:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vJE:=CreateOleObject(JRO.JetEngine);
vJE.CompactDatabase(format(SConnectionString,),
format(SConnectionString,));
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
DeleteFile(STempFileName);
except
result:=false;
end;
end;
办法三:
VC请参考:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;230496
http://support.microsoft.com/?id=230501
下面我将描述五个不使用MySQL的响亮理由。 作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! 这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。 是要和操作系统进行Socket通讯的场景。否则建议慎重! 如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录. 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 原来公司用过MYSQL自己也只是建个表写个SQL 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
页:
[1]