【发布时间】:2009-09-25 11:27:04
【问题描述】:
我正在考虑将 ODBC 数据库连接添加到应用程序。
用户将在运行时配置并选择他们的数据库 odbc 连接。
是否有任何组件可以为我提供所需的一系列对话框?
允许用户选择数据源类型,选择驱动程序,已经浏览 定义的 ODBC 连接等。
干杯 山姆
【问题讨论】:
-
我会尝试建议的解决方案并尽快回来。
标签: database delphi odbc runtime
我正在考虑将 ODBC 数据库连接添加到应用程序。
用户将在运行时配置并选择他们的数据库 odbc 连接。
是否有任何组件可以为我提供所需的一系列对话框?
允许用户选择数据源类型,选择驱动程序,已经浏览 定义的 ODBC 连接等。
干杯 山姆
【问题讨论】:
标签: database delphi odbc runtime
如果您使用的是 ADO 组件,您可以试试这个。
选项 1
Uses
OleDB,
ComObj,
ActiveX;
function Edit_ADO_ODBC_ConnectionString(ParentHandle: THandle; InitialString: WideString;out NewString: string): Boolean;
var
DataInit : IDataInitialize;
DBPrompt : IDBPromptInitialize;
DataSource: IUnknown;
InitStr : PWideChar;
begin
Result := False;
DataInit := CreateComObject(CLSID_DataLinks) as IDataInitialize;
if InitialString <> '' then
DataInit.GetDataSource(nil, CLSCTX_INPROC_SERVER, PWideChar(InitialString),IUnknown, DataSource);
DBPrompt := CreateComObject(CLSID_DataLinks) as IDBPromptInitialize;
{
DBPROMPTOPTIONS_WIZARDSHEET = $1;
DBPROMPTOPTIONS_PROPERTYSHEET = $2;
DBPROMPTOPTIONS_BROWSEONLY = $8;
DBPROMPTOPTIONS_DISABLE_PROVIDER_SELECTION = $10;
}
if Succeeded(DBPrompt.PromptDataSource(nil, ParentHandle,DBPROMPTOPTIONS_PROPERTYSHEET, 0, nil, nil, IUnknown, DataSource)) then
begin
InitStr := nil;
DataInit.GetInitializationString(DataSource, True, InitStr);
NewString := InitStr;
Result := True;
end;
end;
Result:=Edit_ADO_ODBC_ConnectionString(0,OldConnectionString,NewString);
选项 2
Uses
ADODB;
PromptDataSource(Self.Handle, InitialString);
选项 3
Uses
ADODB,
AdoConEd;
procedure TMainForm.Button2Click(Sender: TObject);
Var
ADOConnection1 : TADOConnection;
begin
ADOConnection1:=TADOConnection.Create(Self);
EditConnectionString(ADOConnection1);
end;
您必须选择“Microsoft OLE DB Provider for ODBC Drivers”
再见。
【讨论】:
来自 ADODB 单元的 PromptDataSource 函数。两个参数是 必填:
一个连接字符串。如果您不想要默认连接字符串 只需将一个空字符串传递为:
var sConn : WideString;
begin
sConn := PromptDataSource(Form1.Handle, '');
end;
【讨论】: