您建立连接并像往常一样打开它(使用TADOConnection.ConnectionString
and TADOConnection.Open
),然后使用OpenSchema
. TADODataSet
您作为最后一个参数提供的 将包含一个您RecordSet
可以像使用任何其他数据集一样使用的。
这是我放在一起的一个快速示例(感谢@bummi 对第三个参数的更正 -Unassigned
两者都已Null
编译,但在测试时实际上并没有工作)。我在一个新表单上删除了一个TADOConnection
, TADODataSet
, 并快速配置为指向一个简单的 SQL Server Express 数据库,我有一些测试 - 我包括了连接字符串;我对其所做的唯一更改是在该部分中提供的计算机名称中)。TMemo
TADOConnection
Data Source
procedure TForm3.FormShow(Sender: TObject);
var
i: Integer;
sLine: string;
begin
Memo1.Clear;
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;' +
'Integrated Security=SSPI;' +
'Persist Security Info=False;' +
'Initial Catalog=Contacts;' +
'Data Source=MyComputer\SQLEXPRESS';
ADOConnection1.Connected := True;
ADOConnection1.OpenSchema(siPrimaryKeys, Unassigned, EmptyParam, ADODataSet1);
sLine := '';
for i := 0 to ADODataSet1.FieldCount - 1 do
sLine := sLine + ADODataSet1.Fields[i].FieldName + #9;
Memo1.Lines.Add(sLine);
Memo1.Lines.Add('');
while not ADODataSet1.Eof do
begin
sLine := '';
for i := 0 to ADODataSet1.FieldCount - 1 do
sLine := sLine + ADODataSet1.Fields[i].AsString + #9;
Memo1.Lines.Add(sLine);
ADODataSet1.Next;
end;
end;
该值的可能值SchemaInfo
(传递给 的第一个参数OpenSchema
)可以在ADODB
单元中找到 - 它们记录在Delphi 帮助文件中(请注意,文档说并非所有这些都可以通过 ADO 获得):
TSchemaInfo = (siAsserts, siCatalogs, siCharacterSets, siCollations,
siColumns, siCheckConstraints, siConstraintColumnUsage,
siConstraintTableUsage, siKeyColumnUsage, siReferentialConstraints,
siTableConstraints, siColumnsDomainUsage, siIndexes, siColumnPrivileges,
siTablePrivileges, siUsagePrivileges, siProcedures, siSchemata,
siSQLLanguages, siStatistics, siTables, siTranslations, siProviderTypes,
siViews, siViewColumnUsage, siViewTableUsage, siProcedureParameters,
siForeignKeys, siPrimaryKeys, siProcedureColumns, siDBInfoKeywords,
siDBInfoLiterals, siCubes, siDimensions, siHierarchies, siLevels,
siMeasures, siProperties, siMembers, siProviderSpecific);