Insérer des données dans une base de donnée locale au format sdf (sqlce)

Résolu
cs_julien040807 Messages postés 16 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 18 mai 2010 - 9 mars 2010 à 16:26
cs_julien040807 Messages postés 16 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 18 mai 2010 - 10 mars 2010 à 11:07
Bonjour,

Je vous expose mon problème : J'ai un fichier *.csv, j'ai crée une base de donnée locale sous visual studio 2008 et je voudrais importer les données contenues dans mon fichier *.csv dans ma base de donnée locale. Je n'ai pas encore trouvé la méthode qui me permet d'insérer correctement mes données (INSERT INTO), enfin plutôt, je ne vois pas comment l'utiliser... Cela fait deux trois jours que je suis dessus et je rame un peu ...

Si quelqu'un veut bien me donner les grandes lignes de la démarche à suivre, je lui en serai fort reconnaissant .

Bonne fin d'après midi !

Merci d'avance.

2 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
10 mars 2010 à 10:39
Salut

SqlCeConnection connexion = new SqlCeConnection("Data Source=MaBase.sdf;Persist Security Info=False;");
SqlCeCommand commande = new SqlCeCommand();
commande.Connection = connexion;
commande.CommandText = "INSERT INTO maTable (monChamp1, monChamp2) VALUES (@monChamp1, @monChamp2)";

StreamReader reader = File.Open("monFichier.csv", FileMode.Read);
string ligne;
string[] tableau;
connexion.Open();
while((ligne = reader.ReadLine()) != null)
{
    tableau = ligne.Split(';');
    commande.Parameters.Clear();
    commande.Parameters.Add(new SqlParameter("@monChamp1", Convert.ToInt32(tableau[0])));
    commande.Parameters.Add(new SqlParameter("@monChamp2", tableau[1]));
    commande.ExecuteNonQuery();
}
connexion.Close();
reader.Close();


Bien sûr, tu peux rajouter autant de champs que tu veux en modifiant la requête et en ajoutant des paramètres.
Le deuxième argument du constructeur doit être du bon type (donc tu dois par exemple convertir en int si le champ dans la base de données est un int. Cf le 1er paramètre dans mon exemple).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
1
cs_julien040807 Messages postés 16 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 18 mai 2010
10 mars 2010 à 11:07
Salut, merci pour ta réponse !

Enfaite je bosse là dessus avec un ami, et su son pc aucun problème ... VS2008 gère très bien les bases de données locales ... et sur mon pc, comme souvent pour les produits Microsofts... je tombe sur une "Erreur inattendue .... Donc je me pose la question, si je vais perdre deux jours à désinstaller VS208 de mon poste pour le réinstaller ensuite ....

Vous avez quelque chose d'autre à me proposer ?



Bonne journée !!
0
Rejoignez-nous