如何找出DataTable中哪些列可以为空?

时间:2012-10-03 15:40:22

标签: datatable dbnull datacolumn

有没有办法找出DataTable中哪些列可以为空? 我知道有一个属性:DataColumn.AllowDBNull,可以在DataSet的设计模式中设置为true或false,但我希望直接从数据库获取此信息。

我正在使用来自MySQL数据库的值填充DGV,并将DGV的DataSource绑定到DataTable。

2 个答案:

答案 0 :(得分:1)

作为一个解决方案,我决定检索数据库的Columns Schema,并从那里分配哪些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;
                }
    }

答案 1 :(得分:0)

您可以使用以下内容确定DataTable中的哪些DataColumns可以为空(将AllowDBNull设置为true):

var nullableDataColumns = dataTable.Columns.Cast<DataColumn>().Where(c => c.AllowDBNull);
foreach (var col in nullableDataColumns) {
    Console.WriteLine(col.ColumnName);
}