Как я могу подключиться к базе данных access в Visual Studio

#c# #winforms #oledb

Вопрос:

у меня есть решение для больницы в visual studio 2019. я завершил проектирование, мне нужно подключиться к базе данных моего доступа.

у меня есть этот код, чтобы попытаться достичь этого

 try
{
    string constring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersAcerDesktopHaigazianMajor_CoursesDataBaseMy ProjectHospitalDB.accdb";
    OleDbConnection conDataBase = new OleDbConnection(constring);
    String x = textBox1.Text;

    OleDbCommand cmdSelectParcel = new OleDbCommand("Select * from Employee where SSN ='"   x   "'", conDataBase);

    ...
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
 

У меня также есть это в верхней части формы using System.Data.OleDb; , однако оно не используется и не отображается серым цветом.

Всякий раз, когда я пишу OleDbConnection , он выдает мне ошибку и говорит

«имя типа» OleDbConnection «не удалось найти в пространстве имен» System.Data.ОлеДб». этот тип был перенаправлен в систему сборки.Данные.OleDb, Версия=4.0.1.0, Культура=нейтральная, PublicKeyToken=31bf3856ad364e35 «Рассмотрите возможность добавления ссылки на эту сборку»

Я скопировал код из другого файла решения, и System.Data.OleDb он отлично работает там, поэтому он должен иметь какое-то отношение конкретно к моему проекту. Я также попытался добавить доступ к базе данных через Вид>Другие окна>>Источники данных, но я получаю сообщение

«это окно не поддерживается для выбранного проекта. Для получения инструкций по включению привязки данных, пожалуйста, посетите: https://aka.ms/WinForms/DataBinding»

и я проверил веб-сайт, но я не смог понять.

У кого-нибудь есть идеи, как исправить эту проблему?

Комментарии:

1. Вы читали это Подключение к данным в базе данных Access ?

2. Вы создали платформу .Net Framework или проект .Net 5? Если последнее, то создайте новый, предназначенный для .Net Framework. Или используйте поставщика ODBC вместо OleDb.

3. Я действительно надеюсь, что вы не думаете о запуске проекта «живая больница» с использованием Access?

Ответ №1:

Вам нужна ссылка в вашем проекте на System.Data.

Кстати, как только вы это сделаете, вам нужно будет открыть базу данных с помощью..

  conDataBase.Open();
 

Вы также должны параметризовать свой запрос, а не передавать значения в строке запроса, чтобы избежать внедрения SQL…

  DataTable Employees = new DataTable();
 
 using (OleDbCommand cmdSelectParcel = new OleDbCommand("Select * from Employee where SSN = ?", conDataBase))
 {
     cmdSelectParcel.Parameters.Add("?", OleDbType.VarChar).Value = x;
     Employees.Load(cmdSelectParcel.ExecuteReader());
 }
 

Вам также нужно будет что-то сделать с данными, когда вы их получите…

  foreach (DataRow Employee in Employees.rows)
 {
     //Do Something
 }
 
 

Ответ №2:

Убедитесь, что в вашем проекте действительно есть ссылка на материалы Microsoft OleDb. например, щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите добавить->ссылка->>COM, затем найдите в списке материалы Microsoft OleDB и отметьте их галочкой.