Как получить «Общая» информация «требуется» из столбца Access (Access 2003) с C #? - PullRequest
0 голосов
/ 20 декабря 2011

Перед обновлением таблицы базы данных Access я хочу узнать, заполнены ли все необходимые столбцы.

Так что мне нужно знать, требуется ли столбец, да или нет.

В режиме конструктора таблиц в Access я вижу на вкладке «Общие» необходимую информацию.

Но как мне получить эту информацию с помощью кода C #? Поэтому я ищу не логическое значение «AllowDBNull», а параметр «required» на вкладке «General».

Я использую Visual Studio 2005 и Access 2003.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Попробуйте создать запрос, показывающий строки с обязательными столбцами, для которых установлены нулевые значения.Затем из своей подпрограммы вызова в C # вы можете просто открыть запрос.

0 голосов
/ 21 декабря 2011

У меня здесь есть код, который делает и другие вещи. Я получаю информацию о столбце с помощью таблиц схемы:

using (DataTable dtColumns = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, restrictions)) {
    string AutoNumberColumn = RetrieveAutoNumberColumn(cnn, tableSchema);
    foreach (DataRow row in dtColumns.Rows) {
        var col = new TableColumn();
        col.ColumnName = (string)row["COLUMN_NAME"];
        col.ColumnNameForMapping = prepareColumnNameForMapping(col.ColumnName);
        col.ColumnAllowsDBNull = (bool)row["IS_NULLABLE"]; // <=============
        col.ColumnIsIdentity = col.ColumnName == AutoNumberColumn;
        DbColumnFlags flags = (DbColumnFlags)(long)row["COLUMN_FLAGS"];
        col.ColumnIsReadOnly = col.ColumnIsIdentity || (flags & (DbColumnFlags.Write | DbColumnFlags.WriteUnknown)) == DbColumnFlags.None;
        if (row["CHARACTER_MAXIMUM_LENGTH"] != DBNull.Value) {
            col.ColumnMaxLength = (int)(long)row["CHARACTER_MAXIMUM_LENGTH"];
        }
        col.ColumnDbType = GetColumnDbType((int)row["DATA_TYPE"]);
        col.ColumnOrdinalPosition = (int)(long)row["ORDINAL_POSITION"];
        GetColumnDefaultValue(row, col);

        tableSchema.ColumnSchema.Add(col);
    }
}

Используйте это для параметра ограничений:

string[] restrictions = new string[] { null, null, tableName };

Примечание. Некоторые из типов и методов, которые я использовал в этом примере, являются моими собственными и определены в другом месте, поэтому этот код не будет работать, если вы не адаптируете его к своим потребностям.


Если у вас есть DataSet, вы также можете получить информацию из свойства System.Data.DataColumn.AllowDBNull (не тестировалось).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...