Connexion au base de donnée en WPF avec MVVM desig

Messages postés
63
Date d'inscription
mercredi 5 octobre 2005
Statut
Membre
Dernière intervention
17 février 2018
- - Dernière réponse : Whismeril
Messages postés
14037
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
- 10 févr. 2018 à 15:29
Bonsoir,
je suis débutant au niveau de MVVM design patter et WPF je cherche à réaliser un petit exemple de connexion au base de donnée MS Access en utilisant le WPF et le design patter MVVM light Toolkit. voila le code que j'insère pour le connexion:

Modele/DataConnection.cs
 public  class DataConnection
    {
         public void OpenConnection()
         {
         OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db.accdb;" +
               "Persist Security Info=False;");
 
 
                OleDbCommand cmd = con.CreateCommand();
                cmd.CommandText = "Insert into table (num,nom)Values(123,'nom1')";
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("Record Submitted", "Congrats");
                    }
    }


ViewModel/MainViewModel.cs
 public class MainViewModel : ViewModelBase
    {
 private DataConnection _dataconnection;
 public MainViewModel(DataConnection dataconnexion)
        {
            _dataconnection = dataconnexion;
          _dataconnection.OpenConnection();
 
 }
}


ViewModel/ViewModelLocator.cs

 
 public class ViewModelLocator
    {
        static ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
 SimpleIoc.Default.Register<DataConnection>();
 SimpleIoc.Default.Register<MainViewModel>();
        }
  public MainViewModel Main
        {
            get
            {
                return ServiceLocator.Current.GetInstance<MainViewModel>();
            }
        }
 
        /// <summary>
        /// Cleans up all the resources.
        /// </summary>
        public static void Cleanup()
        {
        }
    }


quand j'excute le programme il n'a rien faire et quand je debug je trouve que l'instruction s'arrête au niveau de l'instruction
  con.Open(); 


de fichier Modele/DataConnection.cs et puis il passe au MainWindow.xaml.cs.
je ne trouve pas pourquoi il ne continue pas l'execution des tous l'instructions?



Afficher la suite 

1 réponse

Messages postés
14037
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
324
0
Merci
Bonjour,
En wpf, il arrive qu’en cas de bug, Visual Studio ne s’arrête pas dessus.
Du coup, ça saute le code suivant.
C’est un peu comme si tu avais mis un try « plus haut », à moins que tu l’aies effectivement fait.

Dans les 2 cas, essaye de mettre
Con.Open();
dans un try et de mettre un point d’arrêt dans le catch, pour voir ce qui cloche avec cette ligne.
Ammar.Dev
Messages postés
63
Date d'inscription
mercredi 5 octobre 2005
Statut
Membre
Dernière intervention
17 février 2018
-
aprés que je teste avec try
 try
             {


               OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Disque F\\WORKSPACE\\MyWork\\MVVMPracticle\\DataService\\Servicededonne\\bin\\Debug\\db.accdb;" +
               "Uid=Admin;Pwd=; Jet OLEDB:Database Persist Security Info=False;");
                 /*OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Disque F\\WORKSPACE\\MyWork\\MVVMPracticle\\DataService\\Servicededonne\\bin\\Debug\\db.mdb;" +
             "Uid=Admin;Pwd=; Jet OLEDB:Database Persist Security Info=False;");*/


                OleDbCommand cmd = con.CreateCommand();
                cmd.CommandText = "Insert into table (num,nom)Values(123,'nom1')";
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("Record Submitted", "Congrats");
                     }
             catch (Exception ex)
             {

                 MessageBox.Show(ex.ToString());
             }

il m'affiche une erreur:
"System.InvalidOperationException:Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas insrit sur l'ordinateur local"
Whismeril
Messages postés
14037
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2019
324 -
Et ben voila, tu n’as pas le moteur de base de données
Commenter la réponse de Whismeril