1

DataTableでnull許容の列を見つける方法はありますか?データセットのデザインモードでtrueまたはfalseに設定できるDataColumn.AllowDBNullというプロパティがあることは知っていますが、この情報をデータベースから直接取得したいと思います。

MySQLデータベースからの値がDGVに入力されており、DGVのデータソースをDataTableにバインドしています。

4

2 に答える 2

1

解決策として、データベースの列スキーマを取得し、そこからどの列を 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;
                }
    }
于 2012-10-04T16:06:03.297 に答える
0

以下を使用して、DataTable 内のどの DataColumn が null 許容である ( AllowDBNulltrue に設定されている)かを判別できます。

var nullableDataColumns = dataTable.Columns.Cast<DataColumn>().Where(c => c.AllowDBNull);
foreach (var col in nullableDataColumns) {
    Console.WriteLine(col.ColumnName);
}
于 2012-10-04T14:54:26.850 に答える