2012-06-13 2 views
0

J'ai un sous-programme pour insérer un enregistrement dans une table de serveur SQL. Le code:Insérer une valeur nulle dans une colonne int dans le serveur 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 
    } 

I autre code de ligne,

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

Ma question est Comtes parfois peut être nul, alors comment changer mon code?

Merci,

+0

Votre "autre code de ligne" n'est pas valide - vous devriez montrer ** code réel **, car il nous aide à mieux travailler avec vous. –

+2

Avez-vous * vraiment * une propriété 'Text' qui peut être assignée à une variable' int'? –

+0

@Jon, il s'agit d'un contrôle numericupdown sous forme de fenêtres. Je pense qu'il est difficile d'attribuer un texte à une variable int. Comment le changer? –

Répondre

7

Vous pouvez utiliser int? counts au lieu de int counts et vérifier la valeur de votre méthode:

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 
} 

il est un contrôle NumericUpDown sous forme de fenêtres. Je pense qu'il est difficile d'attribuer un texte à une variable int. Comment le changer?

Pour définir la valeur de comptage appropriée pour ce qui précède, vous pourriez faire:

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

InsertMet(counts, 'M'); 
+0

Opérateur '??' ne peut pas être appliqué à des opérandes de type 'int?' et 'System.DBNull'. Veuillez corriger cette erreur. –

+0

@Love qui devrait le faire - désolé à ce sujet. –

0

Après la déclaration produira toujours pas de valeur nulle

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

-Si, le compte n'est pas zéro enregistrer la valeur de comptage dans la base de données -Si c'est zéro enregistrer

Questions connexes