Salut tout le monde, j'ai ces codes qui lisent un datagridview dans la base de données.

cmd.Parameters.AddWithValue("@NxtKinNum", Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value));

La ligne qui a été ajoutée est une cellule vide et j'ai essayé de l'ajouter dans la base de données où la valeur de ceci est un entier ... Comment puis-je le configurer pour stocker un null dans la base de données ou n'est-il pas possible de le faire? Merci

0
NoobCoder 24 nov. 2017 à 07:41

3 réponses

Meilleure réponse

Je vais supposer que la base de données que vous utilisez est SQLServer. Il existe un type Null distinct pour lui appelé DBNull. Si vous souhaitez insérer un null pour une colonne si vous obtenez un null dans une valeur, vous devez vérifier si la valeur est vide ou nulle, puis insérer DBNull à la place.

Quelque chose comme ça

 if (String.IsNullOrEmpty(value))
 {
     cmd.Parameters.AddWithValue("@NxtKinNum", DBNull.Value);
 }
 else
 {
     cmd.Parameters.AddWithValue("@NxtKinNum", value);
 }

Modifier: si vous liez une source de données à DataGridView, pour les cellules avec des valeurs nulles, la valeur de cellule par défaut est DBNull. Dans ce cas, vous pouvez faire ce que Reza a suggéré et utiliser simplement

cmd.Parameters.AddWithValue("@NxtKinNum", dataGridView1.Rows[i].Cells[3].Value);
0
Mohamed Najiullah 26 nov. 2017 à 18:54

Tout d'abord, dans la conception de votre table, "YourColumnName" doit être "Allow Null".

cmd.Parameters.AddWithValue("@NxtKinNum",dataGridView1.Rows[i].Cells[3].Value==null ? DBNull.Value : dataGridView1.Rows[i].Cells[3].Value);

Si la valeur de la cellule est nulle, stockez la valeur nulle dans la table, sinon stockez la valeur de la cellule datagridview.

0
Haseeb Butt 6 déc. 2017 à 06:13

Vous n'avez pas besoin de convertir la valeur en entier. Lorsque la valeur du champ est un entier, l'entier sera inséré. De plus, si la valeur est DBNull.Value, la valeur nulle sera insérée dans la colonne.

Il suffit donc d'ajouter un paramètre de cette façon:

cmd.Parameters.AddWithValue("@NxtKinNum", dataGridView1.Rows[i].Cells[3].Value);

Remarque

Vous pouvez faciliter les opérations CRUD si vous utilisez TableAdapter. Jetez un œil à cet article par exemple Opérations CRUD utilisant DataGridView, DataTable et TableAdapter

0
Reza Aghaei 24 nov. 2017 à 05:30
47466484