我需要计算给定数据库(MDB格式)中的表名列表,这些表名具有特定的格式(例如,其中包含DateTime字段"Date Applied")。我该怎么做呢?
注意:我正在使用Delphi 7,ADO组件,Microsoft JET 4.0连接到MDB类型的数据库。
发布于 2009-12-05 19:35:39
模式可能适合:
Set rs = cn.OpenSchema(adSchemaColumns, _
Array(Empty, Empty, Empty, SelectFieldName))其中adSchemaColumns =4
rs是一个记录集对象
cn a连接对象
SelectFieldName是列名,在本例中为"Date Applied“。
此架构的约束为:
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME 返回的列(字段)包括:
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
COLUMN_GUID
COLUMN_PROPID
ORDINAL_POSITION
COLUMN_HASDEFAULT
COLUMN_DEFAULT
COLUMN_FLAGS
IS_NULLABLE
DATA_TYPE
TYPE_GUID
CHARACTER_MAXIMUM_LENGTH
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISION
NUMERIC_SCALE
DATETIME_PRECISION
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
DESCRIPTION -- Obtaining Schema Information from a Database](http://msdn.microsoft.com/en-us/library/kcax58fh(VS.80%29.aspx%29)
发布于 2009-12-08 01:38:04
connection组件上有两种方法,它们对这类工作很有用。第一个是:
procedure GetTableNames(List: TStrings; SystemTables: Boolean = False); 它用当前数据库中所有可用表的列表填充TStrings后代。下一种方法是:
procedure GetFieldNames(const TableName: string; List: TStrings);它填充特定表的所有字段的列表。然后,您可以创建一个简单的例程来遍历要查找的特定字段的所有表的所有字段。
发布于 2009-12-05 19:36:12
这是一个vbscript/asp类型的解决方案。您可以将其应用到Delphi中
Const adSchemaTables = 20
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = 'C:\Scripts\Test.mdb'"
Set objRecordSet = objConnection.OpenSchema(adSchemaTables)
Do Until objRecordset.EOF
Wscript.Echo "Table name: " & objRecordset.Fields.Item("TABLE_NAME")
Wscript.Echo "Table type: " & objRecordset.Fields.Item("TABLE_TYPE")
Wscript.Echo
objRecordset.MoveNext
Loophttps://stackoverflow.com/questions/1851883
复制相似问题