Null referenceException

Signaler
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007
-
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007
-
Bonjour et bonne année a tous !!!
J'essaie de creer un fichier *.csv, et de lui inserer quelques données dedans. Or, une erreur survient toujours :
System.NullReferenceException: Object reference not set to an instance of an object.

Voilà mon code :


Dim
MyFile As IO.FileStream
Dim myData() As String
...
myWriter = New System.IO.StreamWriter(myFile, System.Text.Encoding.ASCII)

Pour chaque Company
For cmpId = 1 To 85

'SQL QUERIESDim selectSQL "SELECT [champN1] + ';' + [champN2] + ';' + [champN3] FROM Table WHERE cmpId'" & cmpId & "'"
Dim selectCommand As New SqlCommand(selectSQL, Conn)

'Pour connaitre le nombre d'enregistrement dans la tableDim countSQL "SELECT COUNT(*) FROM Table WHERE cmpId '" & cmpId & "'"
Dim countCommand As New SqlCommand(countSQL, Conn)

Conn.Open()

'Compte le nombre d'entrees dans la table
countEntry = countCommand.ExecuteScalar()
'Si ce n'est pas vide
If countEntry <> 0 Then
Dim i As Integer = 0
'Add all the data
For i = 1 To countEntry
Try
'Survient le problème
myData(i) = selectCommand.ExecuteScalar()
myWriter.Write(myData(i))
myWriter.Write(myWriter.NewLine)
Catch e As NullReferenceException
End Try
Next i
End If
Conn.Close()
Next cmpId
...

Est-ce un probleme de tableau avec la commande ExecuteScalar ?

Merci a ceux qui se pencheront là dessus

ElpenS

4 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

Je suis pas un expert avec les tableaux, mais il me semble que c'est normal, tu définis une variable string, mais tu lui définis pas de longueur ... donc utilise soit dim tab(50) as string ou alors fait un redim pour augmenter la taille du tableau

perso, j'utiliserais un ArrayList (voir meme un list<String>) comme ca je peux ajouter / modifier des champs sans problème :)


<HR>
Cyril - MVS - MCP ASP
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Salut,

Je ne suis pas tout à fait d'accord avec jesusonline sur ce coup là :
Si tu es en .NET 1.x, utilises plutôt :
System.Collections.Specialized.StringCollection
qui sera quand même plus rapide que le ArrayList
Et si tu es en .NET 2.0, utilise (comme l'a dit cyril ) :
System.Collections.Generics.List<string>
qui sera légèrement plus rapide que l'autre.

Dans tout les cas ce sera plus simple à manier que les tableaux...

Nurgle
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

salut,
tu peux très bien utilisé les tableaux dans ce contexte
voici un exemple de code c#
countEntry = countCommand.ExecuteScalar();
string[] myData = new string[countEntry];

après, tu peux parcourir ton tableau facilement
t'avais une erreur parce que tu utilisais le tableau sans l'avoir initialisé...à chaque fois qu'on manipule une variable null, on est sur d'avoir une erreur parce qu'elle pointe nul part, elle ne fait référence à aucun objet.

etk, bonne chance

@++
Messages postés
260
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
3 novembre 2007

Merci tout d'abord pour ces réponses.

Je n'ai pas encore testé mais je vais m'y mettre tantôt.

Bonne journée a tous

ElpenS