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

Résolu
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006 - 7 févr. 2005 à 15:40
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 11 févr. 2005 à 20:22
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
11 févr. 2005 à 20:22
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
1
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
7 févr. 2005 à 16:23
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
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
7 févr. 2005 à 16:40
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
7 févr. 2005 à 17:09
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
8 févr. 2005 à 08:43
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.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 févr. 2005 à 08:52
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
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
10 févr. 2005 à 10:54
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;






}
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
10 févr. 2005 à 12:37
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
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
11 févr. 2005 à 09:58
ok ça a marché man !!
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
11 févr. 2005 à 09:58
ok ça a marché man !!
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
11 févr. 2005 à 10:41
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
11 févr. 2005 à 11:01
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
11 févr. 2005 à 11:05
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
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
11 févr. 2005 à 14:29
ça va j ai essayé ceci et ça a marché

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

amir
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
11 févr. 2005 à 14:31
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
0
amirirn1 Messages postés 45 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 16 juin 2006
11 févr. 2005 à 16:25
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();
0
Rejoignez-nous