Как использовать класс соединения с базой данных во всем моем приложении - PullRequest
0 голосов
/ 20 мая 2019

Я создал класс для подключения к базе данных MS Access. Он отлично работает на большинстве форм в моем приложении Winforms. Тем не менее, у меня есть форма, где пользователь может добавлять, редактировать или удалять информацию из базы данных. Я построил эту часть, используя строку, но когда я удаляю длинную строку подключения к базе данных, которая была у меня там ранее, и заменяю ее созданным классом, это вызывает исключение.

Я пытался изменить код, удалив строку, но я хочу использовать строковый метод.

Это код, который у меня есть для события нажатия кнопки удаления

 string con = (@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\folder\Desktop\ApplicationFolder\AppName\bin\Debug\DataBase\DatabaseName.accdb");

      string Query = "delete from Employees2 where EmployeeName = '" + 
      this.txtAdminFEmployee.Text + "' ; ";
      OleDbConnection ConnectionString = new OleDbConnection(con);
      OleDbCommand command = new OleDbCommand(Query, ConnectionString);
      OleDbDataReader reader;
      try
      {

        ConnectionString.Open();
        reader = command.ExecuteReader();



        DialogResult result = MessageBox.Show("Employee Deleted Successfully", 
        "Information",
        MessageBoxButtons.OK, MessageBoxIcon.Information);


        while (reader.Read())
        {

        }

      }

      catch (Exception ex)
      {
        MessageBox.Show("Error " + ex);
        ConnectionString.Close();

Это класс базы данных, который я создал

using System.Data.OleDb;


namespace AppName
{
  class OledbConnect
  {
    public OleDbConnection con;

    public void Connection()
    {
      con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DatabaseName.accdb");
    }
  }
}

Мне нужно знать, как использовать класс базы данных в этой строке. Я пробовал разные способы, но ничего не работает. Я все еще новичок в C #, и Google на самом деле не возвращает ничего, что я могу использовать. Спасибо

1 Ответ

0 голосов
/ 20 мая 2019

Ваш исходный код работает, но путаница в именовании переменных очевидна.

string con = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =C:\Users\folder\Desktop\ApplicationFolder\AppName\bin\Debug\DataBase\DatabaseName.accdb";

(я удалил ненужные скобки из объявления; это просто строка.)

Вызывать эту строку «con» немного запутанно.Я бы назвал это «connectionString», или, может быть, «cs» для краткости.

  OleDbConnection ConnectionString = new OleDbConnection(con);
  OleDbCommand command = new OleDbCommand(Query, ConnectionString);

ОК, поэтому вы правильно создаете OleDbConnection, передавая строку соединения (con) его конструктору.Это хорошо.Но вы смутно называете это ConnectionString.Это не строка подключения;это соединение, и ваш код впоследствии использует его правильно.

Так что это работает.Человек может читать из-за неправильного именования переменных, но компилятору все равно, какие у них имена - он очень хорошо знает, что ConectionString является OleDbConnection, и не испытывает никакого когнитивного диссонанса, который я испытываю, когдаЯ смотрю на это.

Если вы переименуете переменные в исходном коде, как я предложил, а затем скопируете этот код в свой класс (кстати, я бы просто назвал его DbConnection; его текущее имя оченьблизко к имени другого класса, что также может сбивать с толку), обращая внимание на то, что делает каждое утверждение и что представляет каждая переменная, тогда вам следует хорошо идти.

...