Come promesso, ecco il codice incriminato:
codice:
public void fromTxtToDb()
{
String leggi;
String listino;
String codice;
String prezzo;
String deposito;
String query;
Int64 i;
Int64 k;
Int64 z;
i = 0;
try
{
fin = new StreamReader("f:\\b3listp.txt");
Console.WriteLine("Aperto il file in lettura per conteggio righe.");
z=0;
while (!fin.EndOfStream)
{
fin.ReadLine();
z++;
}
fin.Close();
Console.WriteLine("Numero righe contenute nel file: {0}",z);
fin = new StreamReader("f:\\b3listp.txt");
Console.WriteLine("Aperto file in lettura per l'elaborazione.");
conn.Open();
Console.WriteLine("Aperto il database per l'elaborazione.");
k=0;
while (!fin.EndOfStream)
{
k++;
leggi = fin.ReadLine();
listino = leggi.Substring(0, 2);
codice = leggi.Substring(2, 50).Replace("'","''");
prezzo = leggi.Substring(83, 7);
deposito=leggi.Substring(52,4);
query = "insert into [blistp-indice](listino,codice,deposito,prezzo) values('" + listino + "','" + codice + "','" + deposito + "'," + prezzo + ")";
cmd.CommandText = query;
i +=cmd.ExecuteNonQuery();
Console.WriteLine("{0}/{1}",k,z);
}
conn.Close();
fin.Close();
Console.WriteLine("Righe lette da file: {0}", k);
Console.WriteLine("Righe inserite nel DB: {0}", i);
}
catch (Exception e)
{
Console.WriteLine("{0}", e.Message);
}
}
Innanzitutto se vedete l'inizializzazione o l'utilizzo di alcune variabili o oggetti non dichiarati è perchè sono globali della classe.
La tabella su cui va ad inserire è composta dai quattro campi presenti nella insert, dove listino, codice e deposito sono di tipo testo (varchar(2), varchar(50), varchar(4)) e insieme sono chiave primaria della tabella.
Come vedete c'è un ciclo che serve per leggere tutte le righe del file txt e per ognuno di essi fa elaborazioni e infine esegue una insert...
Se però la insert genera errore passa alla catch, ma c'è il problema che ho bisogno di continuare con la insert successiva, ovvero il ciclo successivo, e non giova il fatto che termina così l'operazione...