Я пытаюсь прочитать информацию из моей схемы базы данных в C# (.NET 4.5, SQL Server 2014). У меня возникли проблемы с некоторыми полями, такими как MaxLength/ColumnLength, до тех пор, пока не будет found a forum, который упоминает установку DataAdapter.MissingSchemaAction
на MissingSchemaAction.AddWithKey
. К сожалению, поле DefaultValue по-прежнему пуст даже для столбцов, для которых по умолчанию задано значение «Значение по умолчанию или привязка» в свойствах столбца в SQL Server.Как получить DefaultValue столбца из схемы базы данных в C#?
SqlDataAdapter dbadapter = new SqlDataAdapter(SELECT_STRING, CONN_STRING);
dbadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
DataTable tbl = new DataTable();
dbadapter.Fill(tbl);
// I actually looped through all rows/columns, but the net effect here is...
tbl.Columns[0].DefaultValue; // blank for all columns
// Also tried accessing the schema table available through DataReader
IDataReader reader = tbl.CreateDataReader();
DataTable schemaTbl = reader.GetSchemaTable();
/*
* There are different schema fields here than in DataColumn,
* but DefaultValue still blank. I looped through them all but...
*/
schemaTbl.Rows[0]["DefaultValue"]; // blank for all columns
Как я могу прочитать значение по умолчанию из столбца в моей таблице с использованием .NET (желательно, не прибегая к запрашивая sys.*
таблиц SQL для).
Разъяснение
При создании или изменении таблицы, вы можете установить значение по умолчанию для столбца, если он не предусмотрен. Я пытаюсь получить значение по умолчанию.
Пример:
CREATE TABLE Person
(
Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
HomeState varchar(2) DEFAULT 'NY'
)
Теперь, если я скажу, INSERT INTO Person (Id, LastName, FirstName) VALUES (1, 'Doe', 'John')
HomeState будет «Нью-Йорк», хотя я не ставил его.
Просто подтверждения, которую вы пытаясь получить значение по умолчанию для столбца, установленного в таблице базы данных? например, для некоторого типа данных (0)? – Searching
@ Поиск. При создании или изменении таблицы вы можете установить значение по умолчанию для столбца. Например, я могу сказать, создана ли новая строка, чтобы всегда устанавливать поле datetime в значение «1900-01-01», если в инструкции INSERT не указано значение. Обновленный вопрос с примером. – Rick
Точно то, что я хотел знать, и кажется, что вы нашли свой ответ. – Searching