有沒有辦法找出哪些列可以在DataTable中爲空?我知道有一個proprety:DataColumn.AllowDBNull,它可以在DataSet的設計模式中設置爲true或false,但我希望直接從數據庫獲取這些信息。如何找出DataTable中哪些列可以爲空?
我有一個DGV填充來自MySQL數據庫的值,並已將DGV的DataSource綁定到DataTable。
有沒有辦法找出哪些列可以在DataTable中爲空?我知道有一個proprety:DataColumn.AllowDBNull,它可以在DataSet的設計模式中設置爲true或false,但我希望直接從數據庫獲取這些信息。如何找出DataTable中哪些列可以爲空?
我有一個DGV填充來自MySQL數據庫的值,並已將DGV的DataSource綁定到DataTable。
您可以使用以下方法來確定哪些數據表中的DataColumns可以爲空(有AllowDBNull
設置爲true):
var nullableDataColumns = dataTable.Columns.Cast<DataColumn>().Where(c => c.AllowDBNull);
foreach (var col in nullableDataColumns) {
Console.WriteLine(col.ColumnName);
}
不幸的是,默認情況下,所有的DataColumn.AllowDBNull都設置爲true,除非您自己更改DataSet設計模式中的值。 – user1654847
作爲一個解決方案,我決定來檢索數據庫的列的架構,並從那裏分配其中Collumns 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? –
如果可能,我想查詢DataTable。我在DataTable離線時輸入新數據。有沒有辦法讓DataTable存儲可爲空和不可爲空的列的信息? – user1654847