Waylander
-
Modifié par Whismeril le 11/09/2015 à 18:19
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015
-
5 oct. 2015 à 09:49
Bonjour à tous.
Je viens vous voir après deux jours d'intenses recherches..
Voici mon problème :
Je souhaite créer une base de données locale via un DataSet rempli au préalable.
J'ai testé avec la classe SqlConnection, mais pas moyen de me connecter (même sur une base créée manuellement via Visual Studio (2008 au passage)). Et je me retrouve avec le même soucis de connexion avec un SqlDataAdapter..
J'ai déjà passé deux jours à comprendre et faire fonctionner les DataSet (surtout avec DataRow qu'on ne peut pas instancier via son constructeur) alors je commence un peu à désespérer.. Si quelqu'un a une solution, je suis preneur :)
Je vous mets une partie de mon code, qui permet de remplir mon dataset (attention les yeux, ça pique !) :
private bool RemplirDataSet(int nb)
{
bool reussite = false;
string[] lignes = new string[nb];
//Récupération du fichier de sauvegarde
Fichier fichier = new Fichier(fichierSauvegarde);
lignes = fichier.LireFichierParLigne(fichierSauvegarde);
// création dataset
DataSet ds = new DataSet();
ds = CreerBasePerso();
// création datatable + colonnes
DataTable dt = new DataTable();
dt = CreerTablePerso(ds);
string[] fill = new string[dt.Columns.Count - 1];
// création + ajout de lignes dans la table
for (int i = 0; i < lignes.Length; i++)
{
DataRow dr = dt.NewRow();
fill = lignes[i].Split(';');
for (int j = 0; j < fill.Length; j++)
{
dr[j + 1] = fill[j];
}
dt.Rows.Add(dr);
reussite = true;
}
return reussite;
}
Pour info, "LireFichierParLigne()" me permet de récupérer les données de mon fichier .txt (qui seront intégrées dans mon dataset). Ces données sont séparées par un ";" afin de les différencier.
Merci à vous !
EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 20179 12 sept. 2015 à 09:39
Bonjour,
si ta table sql existe
tu peux facilement faire
1. creer SqlDataAdapter
2. definir les commande select,insert , update, delete
3. faire un fill vers ton dataset ou datatable
4. ajouter les données dans ton dataset ou datatable
5. executer tonDataAdapter.update()
si ta table n'existe pas tu peux avant cela creer un SqlCommand pour un create table et lancer un ExecuteNonQuery
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656 11 sept. 2015 à 18:19
Bonjour
je fait très peu de base de données, mais je n'aime pas me servir de dataset.
Je préfère écrire une classe dont les propriétés correspondent aux "champs" de mes données et remplir une List<T>.
Au passage, je ne sais pas ce que fait ta classe Fichier,
mais si elle ne sert qu'à lire ton fichier texte ligne par ligne, alors
System.IO.File.ReadAllLine le fait déjà.
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015 14 sept. 2015 à 09:56
Whismeril 11 sept. 2015 à 18:19
Au passage, je ne sais pas ce que fait ta classe Fichier,
mais si elle ne sert qu'à lire ton fichier texte ligne par ligne, alors
System.IO.File.ReadAllLine le fait déjà.
J'utilise cette fonction plus d'une fois alors au lieu de l'appeler tout le temps, j'ai instancier un objet de ma classe Fichier et je fais appel à ma fonction "LireFichierParLigne". Ma classe travaille aussi sur mon fichier, c'est plus pratique de tout regrouper.
cgandco 12 sept. 2015 à 09:39
si ta table sql existe
Justement, elle n'existe pas, d'où mon problème posé. Je souhaiterai, à partir de mon dataSet (ou de mon fichier), créer une base de données locale. J'ai créé manuellement une dataBase mais elle ne fonctionne pas, l'accès m'est refusé (je n'ai ni ID, ni mdp)..
J'ai l'habitude de me connecter sur des serveurs SQL mais là, mon projet est situé sur des postes uniques (peut fonctionner sans accès réseau etc..).
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656 14 sept. 2015 à 13:09
Bonjour
J'utilise cette fonction plus d'une fois alors au lieu de l'appeler tout le temps, j'ai instancier un objet de ma classe Fichier et je fais appel à ma fonction "LireFichierParLigne". Ma classe travaille aussi sur mon fichier, c'est plus pratique de tout regrouper.
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015 15 sept. 2015 à 10:19
Je suppose que j'utilise SQL compact (création d'un fichier BdD .sdf via visual studio). Je teste ce midi, je te tiens au courant.
PS : je suis obligé de mettre le chemin complet de la DataBase ?
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 20179
>
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015 15 sept. 2015 à 10:27
Je suppose que non si tu mets ta base dans le directory de ton exe mais en debug cela se complique.
le plus facile est de mettre ta connection string dans ton fichier App.config
Bonne journée
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015
>
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 2017 15 sept. 2015 à 11:17
Là j'avoue je sais pas utiliser le fichier App.config.. Et oui j'ai ma base dans le directory de mon projet. A mon avis mon soucis se pose sur la chaine de connexion.
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 20179
>
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015 15 sept. 2015 à 12:27
pour trouver ta chaine de connection, tu ouvre ta fenetre explorateur de serveur dans visual studio, tu te place sur ta base sdf. et la connection string est dans la fenetre de propriete.
c'est beaucoup plus facile car tu ne dois pas recompiler pour changer de connection string, ce fichier sera avec ton exe sous le nom de "nomdetonexe.config"
bonne journée
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015
>
cgandco
Messages postés219Date d'inscriptionmercredi 26 octobre 2011StatutMembreDernière intervention22 juin 2017 5 oct. 2015 à 09:49
Merci pour tes réponses j'ai enfin réussi à trouver mon problème après de maintes recherches !
Je n'avais pas la bonne version ni la bonne dll de System.Data.SqlServerCe. Celle-ci pointait sur une version mobile de sqlServer au lieu de la version compact (que j'ai du modifié aussi car installé en 32 bits alors que je suis en 64 bits..)
Morale du jour : quand on récupère un PC qui n'est pas le sien, toujours vérifier les versions des outils utilisés !