Bonjour,
j'ai lu pas mal de chose sur ce site mais, je ne saisi toujours pas certaines choses.
J'ai une appli dans laquelle je fait un SELECT qui me retourne une seule ROW et dans la foulée je fais une INSERT de cette même ligne avec juste un champ que j'incremente. J'utilise un datareader.
Dans un premier temps j'ai ecrit mon INSERT avec des datareader.GetInt16 ou GetInt32 ou GetString en fonction du type du champs dans la base de données. Puis je suis tombé sur GetSqlValue, qui ne prend pas compte du type, donc très bien j'ai pu faire une boucle.
Seulement, dans les éléments retournés par mon SELECT j'ai des champs Null. Alors j'ai d'abord essayé ceci (dr est mon DataReader):
Mais je n'entre jamais dans le
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 strRequeteInsert = "INSERT INTO Samples (" + intAuditNumberNouveau; for (int k = 1; k < dr.FieldCount; k++) { //MessageBox.Show(dr.GetSqlValue(k).ToString()); if (dr.GetSqlValue(k) == DBNull.Value) { strRequeteInsert += ",Null"; } else { strRequeteInsert += ",'" + dr.GetSqlValue(k).ToString().Replace("'", "''") + "'"; } } strRequeteInsert += ")";Alors j'ai fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (dr.GetSqlValue(k) == DBNull.Value)
Déjà je ne suis pas satisfait par ce code, mais en plus ça ne peut fonctionner car je mets entre quote tous les champs hors quand un champs est de type Int on ne met pas de quote.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 strRequeteInsert = "INSERT INTO Samples (" + intAuditNumberNouveau; for (int k = 1; k < dr.FieldCount; k++) { //MessageBox.Show(dr.GetSqlValue(k).ToString()); if (dr.GetSqlValue(k).ToString() == "Null") { strRequeteInsert += ",Null"; } else { strRequeteInsert += ",'" + dr.GetSqlValue(k).ToString().Replace("'", "''") + "'"; } } strRequeteInsert += ")";
Comment puis je faire?
Partager