зная, будет ли обрезана строка при обновлении базы данных - PullRequest
0 голосов
/ 16 декабря 2009

Я работаю над программным обеспечением, которое берет CSV-файл и помещает данные в sqlserver. Сейчас я тестирую его с неверными данными, и когда я делаю строку данных длинной (в строке) для импорта в базу данных, я получаю сообщение об ошибке: строка или двоичные данные будут усечены, оператор завершен. это нормально, и это то, что я должен ожидать. Теперь я хочу обнаружить эти ошибки до обновления базы данных. Есть ли какой-нибудь умный способ обнаружить это?

Способ работы моего программного обеспечения заключается в том, что я импортирую каждую строку в наборе данных, а затем показываю пользователю данные, которые будут импортированы. Затем он может нажать кнопку, чтобы сделать актуальное обновление. Затем я делаю dataAdapter.Update (набор данных, «что-то»), чтобы обновить базу данных.

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

спасибо

Ответы [ 4 ]

1 голос
/ 16 декабря 2009

Единственный известный мне способ - предварительно проверить информационную схему на наличие ограничения на число символов:

Select
    Column_Name,
    Character_Maximum_Length
From
    Information_Schema.Columns
Where
    Table_Name = 'YourTableName'
1 голос
/ 16 декабря 2009

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

Другим решением было бы явное усечение данных и вставка усеченного содержимого, что можно сделать с помощью SubString.

0 голосов
/ 16 декабря 2009

Или, если вы открыли набор записей в своей базе данных, другим решением было бы просмотреть объект поля, чтобы использовать его длину для усечения строки. Например, с набором записей ADO / кодом VB у вас может быть такой код:

myRecordset.fields(myField) = left(myString, myRecordset.fields(myField).DefinedSize)
0 голосов
/ 16 декабря 2009

Вам нужны метаданные столбца.

MSDN: метод SqlConnection.GetSchema

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