长问题高分求教(成功立即送分):数据库开发中ADO与BDE的可移植性孰好孰差?如果在代码中直接配置,如何去做? 如果是 access sql server 坚决用 ADO 方便,效率高!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下是自动配置ODBC的代码,请指教:{*******************************************************在本程序中,将创建一个ODBC系统数据源(DSN),数据源名称:MyAccess 数据源描述:我的新数据源数据库类型:ACCESS97对应数据库:C:\Inetpub\wwwroot\test.mdb*******************************************************}{ 注意应在USES语句中包含Registry }procedure TForm1.Button1Click(Sender: TObject);varregisterTemp : TRegistry;bData : array[ 0..0 ] of byte;beginregisterTemp := TRegistry.Create; //建立一个Registry实例with registerTemp dobeginRootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE//找到Software\ODBC\ODBC.INI\ODBC Data Sourcesif OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) thenbegin //注册一个DSN名称WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' );endelsebegin//创建键值失败memo1.lines.add('增加ODBC数据源失败');exit;end;CloseKey;//找到或创建Software\ODBC\ODBC.INI\MyAccess,写入DSN配置信息if OpenKey('Software\ODBC\ODBC.INI\MyAccess',True) thenbeginWriteString( 'DBQ', 'C:\inetpub\wwwroot\test.mdb' );//数据库目录WriteString( 'Description', '我的新数据源' );//数据源描述WriteString( 'Driver', 'C:\PWIN98\SYSTEM\odbcjt32.dll' );//驱动程序DLL文件WriteInteger( 'DriverId', 25 );//驱动程序标识WriteString( 'FIL', 'Ms Access;' );//Filter依据WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目WriteString( 'UID', '' );//用户名称bData[0] := 0;WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式endelse//创建键值失败beginmemo1.lines.add('增加ODBC数据源失败');exit;end;CloseKey;//找到或创建Software\ODBC\ODBC.INI\MyAccess\Engines\Jet//写入DSN数据库引擎配置信息if OpenKey('Software\ODBC\ODBC.INI\MyAccess\Engines\Jet',True) thenbeginWriteString( 'ImplicitCommitSync', 'Yes' );WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小WriteInteger( 'PageTimeout', 10 );//页超时WriteInteger( 'Threads', 3 );//支持的线程数目WriteString( 'UserCommitSync', 'Yes' );endelse//创建键值失败beginmemo1.lines.add('增加ODBC数据源失败');exit;end;CloseKey;memo1.lines.add('增加新ODBC数据源成功');Free;end;end; 代码?什么代码?发布的话,ADO最好,可以只修改和数据库的连接参数,BDE要发布很多连接、数据引擎文件,所以不是很方便。ADO是MS的新一代数据库,是基于OLE DB(一组COM对象)的,OLE DB的数据库存取功能非常强大可以存取非关系型数据库,但是它异常复杂,ADO去掉了OLE DB的复杂性同时实现了OLE DB的大部分功能,数据存取效率目前来看和BDE差不多,但是它的功能强大的多,而且它正在发展中,它本身也和操作系统密切结合,所以推荐用ADO。 同意.我也刚开始用SQL Server+D6在做,很多地方有些懵懂。 只要数据库不是Oracle,ADO是比较好用的。至于ADO的配置,只要安装了windows系统就有ADO的引擎,若要手工配置的话,只要更改ADOConnection的连接字符串就可以了。调用系统本身的连接字符串生成代码如下: uses ADOConEd; AdoConnection1.Close; EditConnectionString(ADOConnection1); AdoConnection1.Open; Oracle也不是不可以用ADO呀,不过确实比不上SQL Server了。但是ADO是大势所趋,随着以后的发展,相信ADO会为Oracle提供更多的支持。 如果使用SQL Server使用ADO是最好的,如果是其他的数据库,个人觉得还是使用BDE的速度比较快,就是配置的时候比较麻烦,不过你用ADO也是一样的! 关于delphi程序员发展想请大家讨论一下 再提activeX问题? 桌面图标隐藏和显示问题————在线等待!!?? 高分求教,高手请进,UP有分! 用 ServerSocket 作中转服务器 TCP 数据掉包了 怎么办?关于自动关闭应用程序。 大家知道的回答哟! 我怎么用Query取不到值了? 关于execl文件导入数据库问题! 关于计算时间的问题! 分 我在视图的语法中加where语句怎么不行???????
{*******************************************************
在本程序中,将创建一个ODBC系统数据源(DSN),
数据源名称:MyAccess 数据源描述:我的新数据源
数据库类型:ACCESS97
对应数据库:C:\Inetpub\wwwroot\test.mdb
*******************************************************}
{ 注意应在USES语句中包含Registry }
procedure TForm1.Button1Click(Sender: TObject);
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte;
begin
registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE//找到Software\ODBC\ODBC.INI\ODBC Data Sources
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
begin //注册一个DSN名称
WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' );
end
else
begin//创建键值失败
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;//找到或创建Software\ODBC\ODBC.INI\MyAccess,写入DSN配置信息
if OpenKey('Software\ODBC\ODBC.INI\MyAccess',True) then
begin
WriteString( 'DBQ', 'C:\inetpub\wwwroot\test.mdb' );//数据库目录
WriteString( 'Description', '我的新数据源' );//数据源描述
WriteString( 'Driver', 'C:\PWIN98\SYSTEM\odbcjt32.dll' );//驱动程序DLL文件
WriteInteger( 'DriverId', 25 );//驱动程序标识
WriteString( 'FIL', 'Ms Access;' );//Filter依据
WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
WriteString( 'UID', '' );//用户名称
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式
end
else//创建键值失败
begin
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;//找到或创建Software\ODBC\ODBC.INI\MyAccess\Engines\Jet
//写入DSN数据库引擎配置信息
if OpenKey('Software\ODBC\ODBC.INI\MyAccess\Engines\Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else//创建键值失败
begin
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;memo1.lines.add('增加新ODBC数据源成功');Free;
end;
end;
发布的话,ADO最好,可以只修改和数据库的连接参数,BDE要发布很多连接、数据引擎文件,所以不是很方便。ADO是MS的新一代数据库,是基于OLE DB(一组COM对象)的,OLE DB的数据库存取功能非常强大可以存取非关系型数据库,但是它异常复杂,ADO去掉了OLE DB的复杂性同时实现了OLE DB的大部分功能,数据存取效率目前来看和BDE差不多,但是它的功能强大的多,而且它正在发展中,它本身也和操作系统密切结合,所以推荐用ADO。
我也刚开始用SQL Server+D6在做,很多地方有些懵懂。
至于ADO的配置,只要安装了windows系统就有ADO的引擎,若要手工配置的话,只要更改ADOConnection的连接字符串就可以了。调用系统本身的连接字符串生成代码如下:
uses ADOConEd;
AdoConnection1.Close;
EditConnectionString(ADOConnection1);
AdoConnection1.Open;
但是ADO是大势所趋,随着以后的发展,相信ADO会为Oracle提供更多的支持。
还是使用BDE的速度比较快,就是配置的时候比较麻烦,不过你用ADO也
是一样的!