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

Ammar.Dev 63 Messages postés mercredi 5 octobre 2005Date d'inscription 17 février 2018 Dernière intervention - 10 févr. 2018 à 01:05 - Dernière réponse : Whismeril 12216 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 12 novembre 2018 Dernière intervention
- 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 

Votre réponse

4 réponses

Whismeril 12216 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 12 novembre 2018 Dernière intervention - 10 févr. 2018 à 05:59
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 63 Messages postés mercredi 5 octobre 2005Date d'inscription 17 février 2018 Dernière intervention - 10 févr. 2018 à 14:58
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 12216 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 12 novembre 2018 Dernière intervention - 10 févr. 2018 à 15:23
Et ben voila, tu n’as pas le moteur de base de données
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.