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

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

4 réponses

Répondre au sujet
Whismeril 11006 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 février 2018 Dernière intervention - 10 févr. 2018 à 05:59
0
Utile
3
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 62 Messages postés mercredi 5 octobre 2005Date d'inscription 10 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 11006 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 février 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.