Подключение к базе данных в WPF с помощью шаблона проектирования MVVM
Я новичок в MVVM design patter и WPF я пытаюсь сделать небольшой пример подключения к базе данных MS Access с помощью WPF и MVVM Light Toolkit patter design. но когда я запускаю программу, она ничего не делает, и когда я отлаживаю, я обнаруживаю, что инструкция останавливается на уровне инструкции.
con.Open();
файл model / DataConnection.cs, а затем он переходит в MainWindow.xaml.cs.
Я не нахожу, почему он не продолжает выполнение всех инструкций?
Что я уже пробовал:
Модель / 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"); } }
Модель Представления / MainViewModel.в CS
public class MainViewModel : ViewModelBase { private DataConnection _dataconnection; public MainViewModel(DataConnection dataconnexion) { _dataconnection = dataconnexion; _dataconnection.OpenConnection(); } }
Модель Представления / 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() { } }
J. Calhoun
Вы хотите сказать, что он останавливается на утверждении con.open()? Если это так, то я думаю, что это будет проблема с вашей строкой подключения. Сначала я бы обернул вашу логику OleDBConnection в Try/Catch, а затем, когда вы отлаживаете, если что-то должно было сломаться, catch облегчит отладку, не говоря уже о том, чтобы изящно обработать ошибку, если она должна была быть. Кроме того, судя по + в вашей строке, у вас нет пробела между ; и Persist, что может быть вашей проблемой.
abboudi_ammar
я использую это с помощью try и он показывает мне ошибку:
"Система.InvalidOperationException: поставщик "Microsoft.ACE.OLEDB.12.0" не записан на локальном компьютере"