如何自动创建数据源? 在delphi中,如何根据不同的数据库自动创建数据源?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个好象不好实现!你可以把所有的数据库都列出来,使用异常连接.try 连接1except 连接2...end; 根据配置文件,来进行配置BDE或者式ADO吧 搜一下有很多的procedure TFrom1.CreateDSNBtnClick(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; 上面是创建Access数据源的例子//其它数据库在这里改一下WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' ); uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry;type TForm2 = class(TForm) private **************************** procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION; ***************************** public end;以上*之间的语句为什么提示错误? unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) private procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationprocedure TForm1.WMEndSession(var Msg:TWMEndSession);begin //end; 关于线程求解 特急,请求帮助,导数据到xls文件 已经改成了ISAPI方式的WEBSERVICE如何进行调试??? 用ADOQUERY组件进行插入操作,但数据插入后发现长度不对 如何实现从左到右的画线效果? 头一次用这个为什么会这样呢,帮帮我吧 一个com+组件通讯的问题 动态何如可以注册. 把Lisview里CheckBoxs被选中的条目全删除,怎么办? 怎样分离出含空格的字符串中的非空字符? 请教存储过程返回参数中的简单问题! 请教一个quickreport的问题
try
连接1
except
连接2
...
end;
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;
WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' );
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Registry;
type
TForm2 = class(TForm)
private
****************************
procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;
*****************************
public
end;
以上*之间的语句为什么提示错误?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
private
procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationprocedure TForm1.WMEndSession(var Msg:TWMEndSession);
begin
//
end;