Я пытаюсь добавить новую запись в DataTable
после того, как я загружу ее с информацией, содержащейся в объекте IDataReader
, конкретно DbDataReader
. По-моему, загрузка идет хорошо, и запрос к базе данных правильный.Как добавить новую строку в таблицу, заполненную IDataReader?
При попытке добавить новую строку я получаю ArgumentException
со следующей информацией:
Cannot set column 'ID'. The value violates the MaxLength limit of this column.
Это код, я прямо сейчас:
// Build the query:
DbCommand cmd = dbCon.CreateCommand();
cmd.CommandText = "SELECT ID, Name || ' ' || SurName AS FullName FROM Clients ORDER BY FullName;";
// Execute it:
DbDataReader reader = cmd.ExecuteReader();
// Construct the table out of the query result:
DataTable table = new DataTable();
table .Load(reader);
table.Rows.Add(0, "None");
В базе данных (SQLite) ID
имеет тип INTEGER
и оба Name
и SurName
: VARCHAR
s. Я делаю что-то неправильно? Как может 0
нарушить ограничение MaxLength?
Вы уверены, что исключение поднято в строке, где вы добавляете строку вручную, а не на том, где вы загружаете таблицу из читателя? –
Я так думаю, а затем выполняю через отладчик Visual Studio, это строка, связанная с исключением. – Armos
Если ваш идентификатор не является текстовым столбцом, свойство MaxLength следует игнорировать. http://msdn.microsoft.com/en-us/library/system.data.datacolumn.maxlength.aspx –