有没有办法找出 DataTable 中哪些列可以为空?我知道有一个属性:DataColumn.AllowDBNull,在DataSet的设计模式中可以设置为true或false,但我想直接从数据库中获取这些信息。
我正在使用 MySQL 数据库中的值填充 DGV,并将 DGV 的 DataSource 绑定到 DataTable。
有没有办法找出 DataTable 中哪些列可以为空?我知道有一个属性:DataColumn.AllowDBNull,在DataSet的设计模式中可以设置为true或false,但我想直接从数据库中获取这些信息。
我正在使用 MySQL 数据库中的值填充 DGV,并将 DGV 的 DataSource 绑定到 DataTable。
作为一种解决方案,我决定检索数据库的列模式并从那里分配哪些列 AllowDBNull:
DataTable dbColumnsSchema;
using (MySqlConnection connection = new MySqlConnection(ConnectionString))
{
connection.Open();
dbColumnsSchema = connection.GetSchema("Columns");
connection.Close();
}
AssignMandatoryColumns(dbColumnsSchema);
}
private void AssignMandatoryColumns(DataTable table)
{
foreach (DataRow row in table.Rows)
if (row["TABLE_NAME"].ToString()==myTableName)
if(row["IS_NULLABLE"].ToString()=="NO")
{ string columnName = row["COLUMN_NAME"].ToString();
myDataSet.Tables[myTableName].Columns[columnName].
AllowDBNull = false;
}
}
您可以使用以下内容来确定 DataTable 中的哪些 DataColumns 可以为空(已AllowDBNull
设置为 true):
var nullableDataColumns = dataTable.Columns.Cast<DataColumn>().Where(c => c.AllowDBNull);
foreach (var col in nullableDataColumns) {
Console.WriteLine(col.ColumnName);
}