建立連接並像往常一樣打開它(使用TADOConnection.ConnectionString
和TADOConnection.Open
),然後使用OpenSchema
詢問模式。您提供的TADODataSet
作爲最後一個參數將包含一個RecordSet
,您可以像使用任何其他數據集一樣使用它。
下面是我扔在一起的一個快速樣本(感謝@bummi對第三個參數 - Unassigned
和Null
進行了修正,但在測試時沒有真正的工作)。我在新窗體上刪除了一個TADOConnection
,TADODataSet
和TMemo
,並將TADOConnection
快速配置爲指向一個簡單的SQL Server Express數據庫,用於某些測試 - 包括連接字符串;我對它做出的唯一修改是在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 help file(注意,文件說,不是所有的人都可以經由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);
這看起來不錯。這只是..如何在C++ Builder中編寫VarArrayOf([DatabaseName,SchemaName,TableName])? – Tracer
@Tracer:[documentation](http://docwiki.embarcadero.com/Libraries/XE4/en/System.Variants.VarArrayOf)顯示了C++ Builder的語法(有一個指向C++代碼示例的鏈接該頁面也是如此)。 –
謝謝。我沒有看到它。我現在將嘗試編碼這.. – Tracer