如何从 Sql 表中检索 DataColumn.DefaultValue?

C-P*_*uru 5 .net c# ado.net

有没有办法使用 ado.net 从 Sql 数据库中确定列的默认值?

我尝试使用SqlDataAdapter'sFillSchema方法:

 using (SqlDataAdapter adapter = new SqlDataAdapter()) {
    adapter.SelectCommand = myConnection.CreateCommand();
    adapter.SelectCommand.CommandType = CommandType.Text;
    adapter.SelectCommand.CommandText = "SELECT * FROM myTable";
    DataTable table = new DataTable();
    adapter.Fill(table);
    adapter.FillSchema(table, SchemaType.Mapped);
 }
Run Code Online (Sandbox Code Playgroud)

当我检查DataColumns中的 时DataTable,我可以确定一列是否为AutoIncrement,并且可以使用该AllowDBNull属性确定它是否允许空值。但是,DefaultValue(对于我知道有默认值的列)总是null.

我考虑过:

DataTable schemaTable = null;
using (SqlDataReader reader = adapter.SelectCommand.ExecuteReader(CommandBehavior.SchemaOnly)) {
   schemaTable = reader.GetSchemaTable();
   reader.Close();
}
Run Code Online (Sandbox Code Playgroud)

DefaultValue不包含在架构中。

那么......我怎样才能得到一列的DefaultValue

mar*_*c_s 4

使用此查询来询问INFORMATION_SCHEMA您要查找的信息:

SELECT 
   TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
FROM 
   INFORMATION_SCHEMA.COLUMNS
WHERE 
   TABLE_NAME = 'your table name' AND
   COLUMN_NAME = 'your column name'
Run Code Online (Sandbox Code Playgroud)

马克