Null referenceException

cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007 - 4 janv. 2006 à 11:13
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007 - 18 janv. 2006 à 09:18
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
4 janv. 2006 à 11:33
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
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
4 janv. 2006 à 13:08
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
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
4 janv. 2006 à 21:11
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

@++
0
cs_elpens Messages postés 260 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 3 novembre 2007
18 janv. 2006 à 09:18
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
0
Rejoignez-nous