#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 и отметьте их галочкой.