2012-06-13 6 views
0

У меня есть подпрограмма для вставки записи в таблицу sql-сервера. Код:Вставьте значение null в столбец int в sql-сервере

public void Insert_Met(int Counts, char Gender) 
    { 
     Dictionary<string, object> parameters = new Dictionary<string, object>(); 
     parameters.Add("@Counts", Counts); 
     parameters.Add("@Gender", Gender); 
     // run a stored procedure ExecuteNonQuery 
    } 

Я другой код строки,

 int counts = Convert.ToInt32(numberUpdowncontrol1.Text); 
     // from a control, maybe empty then it is null. 
     Insert_Met(counts,'M'); 

Мой вопрос иногда Считает может быть пустым, так как изменить мой код?

Спасибо,

+0

Ваш «другой код строки» недействителен - вы должны показать ** настоящий код **, так как он помогает нам работать с вами лучше. –

+2

Вы действительно имеете свойство 'Text', которое присваивается переменной' int'? –

+0

@Jon, это числовое ограничение в форме окна. Я чувствую, что трудно передать текст переменной int. Как его изменить? –

ответ

7

Вы могли бы использовать int? counts вместо int counts, и проверьте значение в пределах вашего метода:

public void InsertMet(int? counts, char gender) 
{ 
    Dictionary<string, object> parameters = new Dictionary<string, object>(); 
    parameters.Add("@Counts", counts.HasValue ? counts.Value : (object)DBNull.Value); 
    parameters.Add("@Gender", gender); 
    // run a stored procedure ExecuteNonQuery 
} 

это контроль NumericUpDown в окне формы. Я чувствую, что трудно передать текст переменной int. Как его изменить?

Для того, чтобы установить значение счетчика соответственно для выше, вы можете сделать:

int value = (int)numberUpdowncontrol1.Value; 
int? counts = !string.IsNullOrEmpty(numberUpdowncontrol1.Text) ? value : (int?)null; 

InsertMet(counts, 'M'); 
+0

Оператор '??' не может применяться к операндам типа 'int?' и 'System.DBNull'. Исправьте эту ошибку. –

+0

@ Love, который должен это сделать - извините. –

0

После заявления всегда будет производить не нулевое значение

int counts = Convert.ToInt32(null); // Result is 0 
0
int count = !(count == 0)? count ? (object)DBNull.Value 

-Если, count не равен нулю, сохранить значение счета в базе данных -Если оно равно нулю, сохранить

Смежные вопросы