Класс для хранения логина-пароля - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, уважаемые. Накидал некоторый ГУЙ (Windows Forms) для MySQL. Текстбоксы для ввода логина-пароля и dataGridView для отображения таблицы БД. Создал класс Account для хранения логина-пароля с публичными (потом сделаю приватными и допишу get-set) полями login, password чтобы заносить туда данные при авторизации и дёргать их оттуда при необходимости. При авторизации всё проходит гладко, но при повторном вызове объекта класса Account поля login и password уже не содержат значений, введённых при авторизации, что логично. Как я понимаю, предыдущий объект класса Account с введёнными данными логин-пароль уже сожрал GC. Или я несу бред? Как бы так сделать, чтобы хранить введённые логин и пароль в течение работы программы и дёргать их при необходимости, например в новые формы Windows Forms? Заранее благодарю. Сам код: Form1.cs
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using MySql.Data.MySqlClient;
  10. using MySql.Data;
  11. using System.Windows.Forms;
  12. namespace MySqlGUI
  13. {
  14. public partial class Form1 : Form
  15. {
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. }
  20. private void btnExit_Click(object sender, EventArgs e)
  21. {
  22. Close();
  23. }
  24. private void btnConnect_Click(object sender, EventArgs e)
  25. {
  26. Account newAccount = new Account();
  27. string user = tbUser.Text;
  28. string passwd = tbPasswd.Text;
  29. newAccount.login = user;
  30. newAccount.password = passwd;
  31. string Connect = "SERVER=localhost;" + "DATABASE=testbase;" + "UID=" + newAccount.login + ";" + "PASSWORD=" + newAccount.password + ";";
  32. MySqlConnection myConnection = new MySqlConnection(Connect);
  33. try
  34. {
  35. myConnection.Open();
  36. lblStatus.Text = "Статус соединения: Ok";
  37. MessageBox.Show("Соединение установлено.");
  38. }
  39. catch (Exception ex)
  40. {
  41. lblStatus.Text = "Статус соединения: Failed...";
  42. MessageBox.Show(ex.Message);
  43. }
  44. myConnection.Close();
  45. }
  46. private void btnLookTable_Click(object sender, EventArgs e)
  47. {
  48. Account newAccount = new Account();//новый объект класса Account
  49. string user = tbUser.Text;
  50. string passwd = tbPasswd.Text;
  51. newAccount.login = user;
  52. newAccount.password = passwd;
  53. string Connect = "SERVER=localhost;" + "DATABASE=testbase;" + "UID=" + newAccount.login + ";" + "PASSWORD=" + newAccount.password + ";";
  54. MySqlConnection myConnection = new MySqlConnection(Connect);
  55. myConnection.Open();
  56. MySqlDataAdapter adapter = new MySqlDataAdapter("select * from main", myConnection);
  57. DataSet DS = new DataSet();
  58. adapter.Fill(DS);
  59. dataGridView.DataSource = DS.Tables[0];
  60. myConnection.Close();
  61.  
  62. }
  63. }
  64. }
Класс Account.cs
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MySqlGUI
  7. {
  8. class Account
  9. {
  10. public string login;
  11. public string password;
  12. }
  13. }
И сам "проект":

Решение задачи: «Класс для хранения логина-пароля»

textual
Листинг программы
  1. using MySql.Data.MySqlClient;
  2. using System;
  3. using System.Data;
  4. using System.Windows.Forms;
  5.  
  6. namespace MySqlGUI
  7. {
  8.     public partial class Form1 : Form
  9.     {
  10.         private Account mAccount;
  11.  
  12.         public Form1()
  13.         {
  14.             InitializeComponent();
  15.             mAccount = null;
  16.         }
  17.  
  18.         private void btnExit_Click(object sender, EventArgs e)
  19.         {
  20.             Close();
  21.         }
  22.  
  23.         private void btnConnect_Click(object sender, EventArgs e)
  24.         {
  25.             Account acc = new Account();
  26.             acc.login = tbUser.Text;
  27.             acc.password = tbPasswd.Text;
  28.  
  29.             string Connect = "SERVER=localhost;" + "DATABASE=testbase;" + "UID=" + acc.login + ";" + "PASSWORD=" + acc.password + ";";
  30.             MySqlConnection myConnection = new MySqlConnection(Connect);
  31.  
  32.             try
  33.             {
  34.                 myConnection.Open();
  35.                 lblStatus.Text = "Статус соединения: Ok";
  36.                 MessageBox.Show("Соединение установлено.");
  37.                 mAccount = acc;
  38.             }
  39.             catch (Exception ex)
  40.             {
  41.                 lblStatus.Text = "Статус соединения: Failed...";
  42.                 MessageBox.Show(ex.Message);
  43.                 mAccount = null;
  44.             }
  45.             myConnection.Close();
  46.         }
  47.  
  48.         private void btnLookTable_Click(object sender, EventArgs e)
  49.         {
  50.             if (mAccount != null)
  51.             {
  52.                 string Connect = "SERVER=localhost;" + "DATABASE=testbase;" + "UID=" + mAccount.login + ";" + "PASSWORD=" + mAccount.password + ";";
  53.                 MySqlConnection myConnection = new MySqlConnection(Connect);
  54.                 myConnection.Open();
  55.  
  56.                 MySqlDataAdapter adapter = new MySqlDataAdapter("select * from main", myConnection);
  57.                 DataSet DS = new DataSet();
  58.                 adapter.Fill(DS);
  59.                 dataGridView.DataSource = DS.Tables[0];
  60.  
  61.                 myConnection.Close();
  62.             }
  63.         }
  64.     }
  65. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы