Non mi legge tutte le righe

giovedì 29 ottobre 2009 - 18.44

manuelericci Profilo | Newbie

non va in errore, ma mi inserisce solo la prima righa non ho idea di dove possa essere l'errore....non luppa un fico secco

Dim i As Long = 0
Dim sr As StreamReader = New StreamReader("C:\Fornitori.txt")
Dim line As String = sr.ReadLine()
Dim dbConn As SqlConnection = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & pAssoluto & "\App_Data\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim dbCmd As SqlCommand = New SqlCommand()
dbCmd.Connection = dbConn
Dim wholeFile As String = sr.ReadToEnd()
Do
Dim fields() As String = line.Split(";")
dbCmd.CommandText = "INSERT INTO Clienti(id, nomeF, email, valutazione, descrizione, cell, fax, tel, stato, dataStato, ggS, mmS, yyyyS, localita, responsabile, web, area)VALUES('" & fields(0) & "','" & fields(1) & "', '" & fields(2) & "', '" & fields(3) & "', '" & fields(4) & "', '" & fields(5) & "', '" & fields(6) & "', '" & fields(7) & "', '" & fields(8) & "', '" & fields(9) & "', '" & fields(10) & "', '" & fields(11) & "', '" & fields(12) & "', '" & fields(13) & "', '" & fields(14) & "', '" & fields(15) & "', '" & fields(16) & "' )"
dbConn.Open()
dbCmd.ExecuteNonQuery()
i = i + 1
line = sr.ReadLine()
Loop While Not line = String.Empty
dbConn.Close()

alx_81 Profilo | Guru

>non va in errore, ma mi inserisce solo la prima righa non ho
>idea di dove possa essere l'errore....non luppa un fico secco
se fai una ReadToEnd subito, sei già alla fine del file. Il puntatore si sposta. E poi, non capisco perchè leggi tutto e poi cicli riga per riga..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

ho risolto in parte ho commentato quella riga e pare che importi tutto, adesso ho un'altro errore

Indice oltre i limiti della matrice

Dim i As Long = 0
Dim sr As StreamReader = New StreamReader("C:\Fornitori2.txt")
While Not sr.EndOfStream
Dim line1 As String = sr.ReadLine()
Dim line As String = line1.Replace("'", "''")
Dim dbConn As SqlConnection = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & pAssoluto & "\App_Data\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim dbCmd As SqlCommand = New SqlCommand()
dbCmd.Connection = dbConn
'Dim wholeFile As String = sr.ReadToEnd()
Dim fields() As String = line.Split(";")
dbCmd.CommandText = "INSERT INTO Clienti(id, nomeF, email, valutazione, descrizione, cell, fax, tel, stato, dataStato, ggS, mmS, yyyyS, localita, responsabile, web, area)VALUES('" & fields(0) & "','" & fields(1) & "', '" & fields(2) & "', '" & fields(3) & "', '" & fields(4) & "', '" & fields(5) & "', '" & fields(6) & "', '" & fields(7) & "', '" & fields(8) & "', '" & fields(9) & "', '" & fields(10) & "', '" & fields(11) & "', '" & fields(12) & "', '" & fields(13) & "', '" & fields(14) & "', '" & fields(15) & "', '" & fields(16) & "' )"
dbConn.Open()
dbCmd.ExecuteNonQuery()
i = i + 1
line = sr.ReadLine()
dbConn.Close()
End While

alx_81 Profilo | Guru

>ho risolto in parte ho commentato quella riga e pare che importi
>tutto, adesso ho un'altro errore
>
>Indice oltre i limiti della matrice
Due cose.
1 - E' voluta la cosa di fare due letture? una all'inizio del ciclo e una alla fine? Secondo me non ti serve, a meno che tu non voglia saltare una riga. Anche la readline sposta il puntatore di uno.
2 - Sicuro di avere 17 valori nell'array dopo la split?
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

per la prima domanda si posso evitare di leggere due volte ma non capisco a quale punto ti riferisci
per la seconda si sono 17 (porta sf.....? )

alx_81 Profilo | Guru

>per la prima domanda posso evitare di leggere e poi scrivere
>per la seconda si sono 17 (porta sf.....? )
Fai un po' di debug e segnami dove ottieni l'errore.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

Errore server nell'applicazione '/StudioSorgenti'.
Indice oltre i limiti della matrice.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.IndexOutOfRangeException: Indice oltre i limiti della matrice.

Errore nel codice sorgente:

Riga 51: 'Dim wholeFile As String = sr.ReadToEnd()
Riga 52: Dim fields() As String = line.Split(";")
Riga 53: dbCmd.CommandText = "INSERT INTO Clienti(id, nomeF, email, valutazione, descrizione, cell, fax, tel, stato, dataStato, ggS, mmS, yyyyS, localita, responsabile, web, area)VALUES('" & fields(0) & "','" & fields(1) & "', '" & fields(2) & "', '" & fields(3) & "', '" & fields(4) & "', '" & fields(5) & "', '" & fields(6) & "', '" & fields(7) & "', '" & fields(8) & "', '" & fields(9) & "', '" & fields(10) & "', '" & fields(11) & "', '" & fields(12) & "', '" & fields(13) & "', '" & fields(14) & "', '" & fields(15) & "', '" & fields(16) & "' )"
Riga 54: dbConn.Open()
Riga 55: dbCmd.ExecuteNonQuery()


File di origine: E:\StudioSorgenti\UploadFileTxt.aspx.vb Riga: 53

Analisi dello stack:

[IndexOutOfRangeException: Indice oltre i limiti della matrice.]
UploadFileTxt.Page_Load(Object sender, EventArgs e) in E:\StudioSorgenti\UploadFileTxt.aspx.vb:53
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

alx_81 Profilo | Guru

>Errore server nell'applicazione '/StudioSorgenti'.
>Indice oltre i limiti della matrice.
>Descrizione: Eccezione non gestita durante l'esecuzione della
>richiesta Web corrente. Per ulteriori informazioni sull'errore
>e sul suo punto di origine nel codice, vedere l'analisi dello
>stack.
secondo la riga dell'errore, quel fields non ha 17 campi.. prova a fare watch di quel fields e controlla la count.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

cioè ?

alx_81 Profilo | Guru

>cioè ?
debug, metti un breakpoint sulla riga, quando si ferma, tasto destro su field e poi quickwatch. Naviga l'oggetto e vedi quanto vale la count.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

Naturalmente dal IDE ma non trovo quickwatch

I campi ci sono tutti

66;Agenzia Immobiliare Area;immobiliare@areasardegna.com;0;;;079 270142;79.276.811;2;01/01/08;1;1;2008;Sassari;Nino Deffenu;www.areasardegna.com/servizi.php;2

In espressione di controllo i campi sono 17 da 0 a 16


alx_81 Profilo | Guru

>Naturalmente dal IDE ma non trovo quickwatch
>
>I campi ci sono tutti
>
>66;Agenzia Immobiliare Area;immobiliare@areasardegna.com;0;;;079
>270142;79.276.811;2;01/01/08;1;1;2008;Sassari;Nino Deffenu;www.areasardegna.com/servizi.php;2
>
>In espressione di controllo i campi sono 17 da 0 a 16
seleziona "fields" col mouse e poi premi destro. Deve esserci QuickWatch..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

io utilizzo V S 2008 express forse questo fa la differenza ?

alx_81 Profilo | Guru

se non hai quickwatch, avrai però AddWatch..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

Vedo questo

1000x691 511Kb

alx_81 Profilo | Guru

>vedo questo
aaaaaaaah, ma ce l'hai in italiano! allora "Aggiungi Espressione di controllo". Appena lo fai, ti compare sotto, nella finestra "espressioni di controllo" il campo aggiunto. E vedo che count di fields, nello screenshot è 1.. mmmmh. Io guarderei quello

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

non voglio trovare la scusa ma te l'ho detto prima
in ogni caso adesso che devo controllare ?

alx_81 Profilo | Guru

>non voglio trovare la scusa ma te l'ho detto prima
>in ogni caso adesso che devo controllare ?
Fields deve avere dentro 17 locazioni. Se tu mi alleghi uno screenshot in cui mi fai vedere che ce n'è uno, per forza ottieni errore.
Non mi sembra proprio ne abbia 17 come ti dovresti aspettare

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

manuelericci Profilo | Newbie

in effetti ho rilevato un'errore sulla riga del file txt proverò a verificare meglio ed a correggere il file prima di inserirlo. intanto grazie 1000 ti faccio sapere se funziona....
PS grazie anche di avermi fatto scoprire come si utilizza il debug

alx_81 Profilo | Guru

>PS grazie anche di avermi fatto scoprire come si utilizza il debug
Questo è importante, è l'amico numero uno a runtime per evitare errori inaspettati e per correggere quelli che non sono stati gestiti.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5