|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
Возникла проблема. Программа должна записывать значения в удаленную базу данных, и в принципе, работала до изменений в схеме данных. Сейчас добавились целочисленное поле (int), nullable. По умолчанию нужно сделать запись null в значение этого атрибута. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
и вот тут начинаются проблемы. "невозможно преобразовать null в "int", т.к. он является типом значения, не допускающим null" пробовал варианты cmd.Parameters.AddWithValue("@WorkerID", aEntry.WorkerID ? null); cmd.Parameters.AddWithValue("@WorkerID", aEntry.WorkerID ? "null"); почему-то ругается на отсутствующее двоеточие в конце. также пробовал public int? WorkerID = null; компилируется успешно, все вроде хорошо, но потом база данных при работе с приложением возвращает expects parameter @WorkerID, which was not supplied. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 18:35 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
Antony GL, вместо Null надо передавать DBNull.Value ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 18:48 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
Antony GL, кто писал приведённый Вами код? Добавьте проверку на null, фигли: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 18:51 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
.. а расскажите, пожалуйста, зачем надо писать null в базу? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 18:53 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 18:56 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
LelouchAntony GL, вместо Null надо передавать DBNull.Value Нашел http://msdn.microsoft.com/ru-ru/library/system.dbnull.value(v=vs.90).aspx статью, но у меня не получается корректно вызвать это дело - упираюсь в старую ошибку на новый лад: Код: c# 1. 2.
Оператор = не может применяться к операндам типа int и System.DBNull Если честно, из приведенного примера, не понял, как бы его корректно вызвать. Попробовал объявить в переменной Код: c# 1.
пишет неявное преобразование невозможно Попробовал другой прием: Код: c# 1. 2.
Компилируется, ошибок не выдает, записей в базу не делает, try catch ничего не отлавливает. Завершается без ошибок и каких-либо полезных записей в логах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 19:11 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
skyANAAntony GL, кто писал приведённый Вами код? Добавьте проверку на null, фигли: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Достался по наследству. carrotik.. а расскажите, пожалуйста, зачем надо писать null в базу? вообще-то, WorkerID - FK, как бы грустно и смешно не звучало. Но поскольку сервис, который делает запись в БД, WorkerID знать не может, то он пишет туда null , а другая программа, перед работой с базой данных, выполняет апдейт, который наполняет столбец значениями... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 19:50 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
Antony GL, ... это MSSQL? ... если да, то зачем вообще писать null, если для nullable полей сервер сам создает этот null по умолчанию? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 20:09 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
carrotikAntony GL, ... это MSSQL? ... если да, то зачем вообще писать null, если для nullable полей сервер сам создает этот null по умолчанию? Да, СУБД - MS SQL 2005 и 2008. Ответ на ваш вопрос в первом посте: Antony GLВозникла проблема. public int? WorkerID = null; компилируется успешно, все вроде хорошо, но потом база данных при работе с приложением возвращает expects parameter @WorkerID, which was not supplied. а также, в случае, если последнее поле в программе не описано вообще никак, то возвращает ошибку "There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 20:59 |
|
Записать значение null . "Невозможно преобразовать null в int ..."
|
|||
---|---|---|---|
#18+
skyANA, спасибо! Рабочий вариант следующий Объявление переменной: public int? WorkerID=null; if (aEntry.WorkerID == null) { cmd.Parameters.AddWithValue("@WorkerID", DBNull.Value); } else { cmd.Parameters.AddWithValue("@WorkerID", aEntry.WorkerID); } Спасибо еще раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2013, 21:03 |
|
|
start [/forum/topic.php?fid=20&msg=38244402&tid=1404762]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
124ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 239ms |
0 / 0 |