我需要为数据库中的每个表检索以下信息:
- 所有列名
- 对于每一列,它的类型
- 类型最大长度
可能的方法是运行一个查询(甚至可以使用等待执行它,即异步):
select object_NAME(c.object_id), c.name, t.name, c.max_length
from sys.columns c
INNER JOIN sys.types t
ON t.system_type_id = c.system_type_id
另一方面,连接上有 GetSchema 方法,它是相同的:
DataTable columns = connection.GetSchema(SqlClientMetaDataCollectionNames.Columns, restrictions);
foreach (DataRow row in columns.Rows)
{
string columnName = row[3].ToString();
string columnDataType = row[7].ToString();
string columnDataTypeLen = row[8].ToString();
}
哪种方法更好用?看起来第二个应该更快 - 我是对的吗?性能呢?