怎样完成ODBC的自动配置?
比如
连接一个ACCESS数据库
首先就要在ODBC里设置好数据来源才行
然后用ADOCONNECTION连接它
那么
怎样做才能让它自动完成这些配置呢
是自己写个程序实现,还是用相关的软件来编写
比如
连接一个ACCESS数据库
首先就要在ODBC里设置好数据来源才行
然后用ADOCONNECTION连接它
那么
怎样做才能让它自动完成这些配置呢
是自己写个程序实现,还是用相关的软件来编写
解决方案 »
- 这几天脑袋不太好使,来提个问题:数字判断问题.
- 有关BCD码的问题
- 请问一下如何实现连续播放.wav文件啊????
- 怎么编写一个Dll使IE下JavaScript中可用window.external.myFunction(*, ... ,*)
- 如何将listview的数据导出到excel?
- 如何复制SQL Server中的新增表
- 请教一个删除数据的问题,谢谢!
- fastReport导出excel问题
- 如下的代码可以显示出ie的“历史”浏览窗口,可是无法得到具体历史的url,使用Dispname属性无法得到。谢谢
- 如何让程序的子窗体始终位于所有其它进程的最前端?
- 如何使得DBGrid的某个Column的width永远为0
- 求助!哪位大侠知道在delphi中如何获得一个文本的创建时间?
如果你在ODBC中,有相应的接口函数可以完成你要的功能,不过Delphi用的的BDE.你要查一下MSDN如何配置ODBC
在自己机子上编译肯定是没有问题的
就出现如下错误:
“ODBC驱动程序管理器没发现数据源名称并且未指定默认驱动程序”
var
reg: TRegistry;
bData : array[ 0..0 ] of byte;
DrvPath : string;
begin
reg:= TRegistry.Create;
with reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey('SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)',false) then
begin
DrvPath:=ReadString('Driver');
end
else
begin //创建键值失败
//ShowMessage('公共信息'+':'+chr(10)+chr(10)+'您没有正确安装驱动程序Microsoft Access Driver (*.mdb),请重新安装!','错误信息', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
Reg.CloseKey;
//找到Software\ODBC\ODBC.INI\ODBC Data Sources
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
begin
WriteString(aDSN, 'Microsoft Access Driver (*.mdb)' );
end
else
begin //创建键值失败
//application.MessageBox('公共信息'+':'+chr(10)+chr(10)+'配置ODBC数据源失败!','错误信息', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
CloseKey;
//找到或创建Software\ODBC\ODBC.INI\msac_infodb,写入DSN配置信息
if OpenKey('Software\ODBC\ODBC.INI\'+aDSN,True) then
begin
WriteString( 'DBQ', aDBName);//数据库目录,连接您的数据库
WriteString( 'Description','系统信息数据库数据源' );//数据源描述
//WriteString( 'Driver', 'C:\WINNT\System32\odbcjt32.dll' );
WriteString( 'Driver', DrvPath );//驱动程序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
//application.MessageBox('公共信息'+':'+chr(10)+chr(10)+'配置ODBC数据源失败!','错误信息', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
CloseKey;
//找到或创建Software\ODBC\ODBC.INI\msac_infodb\Engines\Jet
//写入DSN数据库引擎配置信息
if OpenKey('Software\ODBC\ODBC.INI\'+aDSN+'\Engines\Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else//创建键值失败
begin
//application.MessageBox('公共信息'+':'+chr(10)+chr(10)+'配置ODBC数据源失败!','错误信息', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
CloseKey;
ConfigAccessOdbc:=True;
Free;
end;
end;
但是没有数据源程序运行的时候就会报错
TO:myth_2002(myth)
参数aDSN是什么意思啊,看不太懂,请赐教!
的函数
解答有分
//动态设置ODBC数据源unit ODBC;interfaceuses
Windows,SysUtils, Forms,Registry;procedure ODBCCreate();implementationprocedure ODBCCreate();
var
RegODBC:Tregistry;
begin
Try
RegODBC:=Tregistry.Create;
RegODBC.RootKey:=HKEY_CURRENT_USER;
RegODBC.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',true);
RegODBC.WriteString('MyODBC','Microsoft Visual FoxPro Driver');
RegODBC.CloseKey;
if RegODBC.OpenKey('\Software\ODBC\ODBC.INI\MyODBC',True) then
begin
RegODBC.WriteString('BackgroundFetch','Yes');
RegODBC.WriteString('Collate','Machine');
RegODBC.WriteString('deleted','Yes');
RegODBC.WriteString('Description','');
RegODBC.WriteString('Driver',ExtractFilePath(Application.ExeName)+'vfpodbc.dll');
RegODBC.WriteString('Exclusive','NO');
RegODBC.WriteString('Null','Yes');
RegODBC.WriteString('SetNoCountOn','NO');
RegODBC.WriteString('SourceDB',ExtractFilePath(Application.ExeName));
RegODBC.WriteString('SourceType','DBF');
end
else
begin
application.MessageBox('无法创建ODBC数据源,请确认注册表未写保护','警告',mb_ok);
application.Destroy;
end;
Finally
RegODBC.CloseKey;
RegODBC.free;
end;
end;
end.
你连数据库access,就别用什么odbc了,直接连access,数据库搞成相对路径,只要不让exe和access保持相对的路径,什么时候都能用
谢谢myth_2002(myth)