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

Ammar.Dev Messages postés 52 Date d'inscription mercredi 5 octobre 2005 Statut Membre Dernière intervention 28 janvier 2021 - 10 févr. 2018 à 01:05
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 - 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?



A voir également:

1 réponse

Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 656
10 févr. 2018 à 05:59
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.
0
Ammar.Dev Messages postés 52 Date d'inscription mercredi 5 octobre 2005 Statut Membre Dernière intervention 28 janvier 2021
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"
0
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 656
10 févr. 2018 à 15:23
Et ben voila, tu n’as pas le moteur de base de données
0
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 656
10 févr. 2018 à 15:29
0
Rejoignez-nous