У меня есть поле с именем смеси с типом данными NCHAR (2) у пользователей таблицы. DataSet в VS2010 был создан из этой таблицы. Полевая смесь в DataSet имеет тип System.String с максимальной длиной до . У меня есть текстовое поле, которое связывается с этим DataSet. Теперь, если, например, изменить значение «00» и нажмите кнопку Сохранить, я могу видеть, что, когда программа обновления набора данных в базу данных:ведущие нули в типе данных NCHAR (2) MSSQL Server 2008
usersTableAdapter.Update(usersDataSet.Users);
Значение выбранного в данный момент пользователь «»:
currentUser.mix = "00";
Но в базе данных значение спасенного, как это: "". Я не понимаю, почему был удален первый нуль, и пространство было добавлено в конце. Если, например, я поместил «10» в текстовое поле и сохранил, он будет сохранен в базе данных как «10». Но если я вложу текстовое поле как «01», снова будет удаляться первый ноль -> «1».
Что-то, где-то, конвертирует это значение должно быть числовым (и, возможно, окончательная вставка/обновление преобразует его обратно в строку). Вам нужно выяснить, где происходит это преобразование. –
Я отлаживал строку за строкой и до окончательного кода обновления, значение mix всегда в строке («00»), поэтому я не знаю, где будет происходить это преобразование. Я думаю, что это происходит где-то между набором данных и базой данных. –
Изучите 'UpdateCommand' и' InsertCommand' (что я предполагаю, это 'SqlDataAdapter')' userTableAdapter'. Каковы их 'CommandText'ы? Есть ли какие-то параметры? Если они ошибаются, как был создан «userTableAdapter»? –