Recuperer des données d un fichier txt et les inserer dans une base de donnée sq [Résolu]

Signaler
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Salut ,
Je dois recuperer des champs dans un ficher txt et les inserer dans des tables d une base de donnée sql Server ,
La taille des champs du fichier .txt je les connais .je dois faire ça en C#
Donc j ouvre le fichier txt je lis x caracter et je l insere dans la table.
Si qcq un a une bonne idée, je le remercie d avance.

16 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Pour transformer ton string en int, tu as la fonction int.Parse(tonString);



Et sinon, il faut que tu indique a ton sqlCommand quelle connexion tu va utiliser, il me semble.

SqlCommand addEmp = new

SqlCommand("INSERT INTO ATC
('"+aMettreEnBdd+"','"+aMettreEnBdd+"','"+aMettreEnBdd+"','"+aMettreEnBdd+"','"+aMettreEnBdd+"'",
_conn);




N'oublies pas de valider les réponses qui ont pu t'aider, pour que
les prochains qui auront les memes problemes que toi puissent
facilement trouver leur chemin


a++





Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Oui ta méthode est faisable... qu'est ce qui te chagrine ?

Pour récuperer du texte entre x et y caracteres, tu as la méthode String.Substring(index, longueur).

Et pour la base de données, en gros, il te
faut un objet SqlConnection et un objet SqlCommand... Tu crées une
requete sous
forme de string que tu associes a ton object SqlCommand, tu ouvre ta
connexion, tu execute la requeste avec SqlCommand.ExecuteNonQuery(), et
tu fermes ta Connexion.



Si tu veux obtenir d'autres informations, n'hésite pas a poser des infos plus précises :)




Mx
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
Merci beaucoup
Mais peux tu me donner aussi les fonction exactes pour l ouverture du ficher et aussi pour detecter la fin du fichier et de passer à la ligne suivante.
Merci
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Bien sur,



Pour ouvrir un fichier, tu as la classe System.IO.StreamReader.

Et avec le StreamReader, tu as plusieurs méthodes, telles que
ReadToEnd(), ReadLine() et ReadBlock() qui te retournent tout les 3 une
string (ce qui a été lu)



Tu peux aussi, si tu veux, mettre chaque ligne dans une string (si tu
veux faire plusieurs traitement dans une ligne). Petit exemple :



StreamReader sr = new StreamReader( fileName, ASCIIEncoding.Default);



// Le fichier est découpé en lignes

string[] lines = sr.ReadToEnd().Split('\n');;



// On va traiter le fichier ligne par ligne

for(int i = 0; i < lines.Length; i++)

{

// On récupere les 10 premiers chars pour les mettre en bdd

string aMettreEnBdd = lines[i].Substring(0, 10)

string aMettreEnBdd2 = lines[i].Substring(15, 10);

...



}


Si j'avais plus de temps, je pourrais mettre l'acces et l'envoi vers la bdd. Si tu as besoin, je le ferais tout a l'heure



Bon courage.
Mx
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
je te remercie ,
tu as mis ce que je voulais , je vais me debrouiller avec ça c est dejà tres bien .
Pour ce qui est la base de donnée je sais comment ça marche.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Juste une petit precision, dans les paramètres du substring, il faut
préciser l'index du premier caractere, et la longueur (non pas l'index
du dernier caractere). Je dis ca parce qu'a chaque fois je me fais
avoir...

Mx
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
Salut ,
j ai cette erreur là qd je vais lire le fichier

Une exception non gérée du type 'System.ArgumentOutOfRangeException' s'est produite dans mscorlib.dll


Informations supplémentaires : Index and length must refer to a location within the string.

à remarquer que j ai du supprimer la l argument ASCIIEncoding.Default parce que j avais un probleme dans la compilation.

StreamReader sr = new StreamReader( fileName, ASCIIEncoding.Default);


if (openFile.ShowDialog()==DialogResult.OK)


texte2Open.Text=openFile.FileName;


StreamReader sr =
new StreamReader( texte2Open.Text);





string[] lines = sr.ReadToEnd().Split('\n');;



// On va traiter le fichier ligne par ligne



for(
int i = 0; i < lines.Length; i++)


{



// On récupere les 5 premiers chars pour les mettre en bdd



string aMettreEnBdd = lines[i].Substring(0, 5);



text.Text=aMettreEnBdd;






}
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Les strings sont en fait un tableau de caracteres. Ton erreur voudrait
dire alors que soit ta ligne est vide (le caractere lines[i][0]
n'existe pas), ou que la chaine fais moins de 5 caracteres !

Vérifies bien la taille de tes "lignes", en gros

Mx
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
ok ça a marché man !!
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
ok ça a marché man !!
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
encore moi !!,
pour recuperer le nom d un fichier avec son extension je fais

if (openFile.ShowDialog()==DialogResult.OK)


texte2Open.Text=openFile.FileName;

mais je recupere l adresse de l emplacement du fichier : {Text=@"C:\Documents and Settings\users\My Documents\Delphi\ATC.TXT"}
mais moi ce qui m' intresse c est ATC.TXT

tu sais me dire comment recuperer ATC.TXT
Merci
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Je n'ai pas devant moi les propriétés de l'openFileDialog, mais a la limite, passes par un FileInfo intermediaire



if (openFile.ShowDialog()==DialogResult.OK)

{

FileInfo fi = new FileInfo(openFile.FileName)

if( fi.Exists)


texte2Open.Text = fi.Name;



}


Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
45
Ou a la limite, tu cherche la derniere occurence du caractere '\' avec
LastIndexOf() dans ton chemin du fichier, et tu récupere les caracteres
qui le suivent avec un SubString(), ca marchera aussi.

Mx
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
ça va j ai essayé ceci et ça a marché

textBox1.Text = System.IO.Path.GetFileName(fileName.ToUpper());

amir
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
pour transformer un string en int comment peut on faire , dans la class string il n y a aucun methode qui permet ça
j ai ;

string a =(
string)oDS.Tables[0].Rows[dataGrid1.CurrentRowIndex]["taille"];
et j aimerai que a devient un entier

amir
Messages postés
45
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
bonjour,
je veux entrer des donnée dans la base de donné
mais qd je fais l insertion
j ai l erreur ExecuteNonQuery:Connection property has not benn initialized
// Get Database Connection


_conn =
new SqlConnection(@"user id=ASPNET;initial catalog=APB;data source=BA_INFOSTAGE2;Integrated Security=SSPI");


SqlCommand addEmp =
new SqlCommand("INSERT INTO ATC ('"+aMettreEnBdd+"','"+aMettreEnBdd+"','"+aMettreEnBdd+"','"+aMettreEnBdd+"','"+aMettreEnBdd+"'");








_conn.Open();


addEmp.ExecuteNonQuery();


_conn.Close();