Где у меня возникла проблема со связью между программой и базой данных?C#

Место общения программистов C#
Anonymous
Где у меня возникла проблема со связью между программой и базой данных?

Сообщение Anonymous »

В моей программе я сначала загружаю форму с именем входа в MySQL. Когда ввожу неверный логин и пароль, все работает нормально, дальше пройти не даёт. Когда ввожу правильный логин и пароль... Проходит, но ничего правильно сделать в библиотеке форм не получается... Постоянно появляется сообщение "Неверное имя пользователя/пароль, попробуйте еще раз". И я залогинился... Например, количество пользователей показывает -1. На данный момент их 0... Функции не работают, но когда я ввёл логин и пароль прямо в код - всё заработало без проблем. Есть у кого-нибудь идеи, где ошибка?
DBConnect.cs (возможно, здесь проблема, но я не уверен...); пожалуйста, игнорируйте комментарии: P
DBConnect.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace Projekt_BD
{
public class DBConnect
{
private MySqlConnection connection;
private string server;
private string database;
private string uid;
private string password;

// Lista przechowująca zadania
private List tasksList = new List();

public DBConnect()
{
Initialize();
}

private void Initialize()
{
server = "localhost";
database = "biblioteka";
uid = ""; // Puste na początku
password = ""; // Puste na początku

// Aktualizacja łańcucha połączenia z danymi logowania
string connectionString = $"SERVER={server}; DATABASE={database}; UID={uid}; PASSWORD={password};";
connection = new MySqlConnection(connectionString);

}

// Metoda do ustawiania nowych danych logowania
public void SetLoginCredentials(string newUid, string newPassword)
{
uid = newUid;
password = newPassword;

// Upewnij się, że odwołujesz się do pola klasy connection
connection.ConnectionString = $"SERVER={server}; DATABASE={database}; UID={uid}; PASSWORD={password};";
}

// Metoda do sprawdzania poprawności danych logowania
public bool CheckLogin(string login, string password)
{
// Oczyszczanie danych logowania
login = login.Trim();
password = password.Trim();

SetLoginCredentials(login, password); // Ustaw nowe dane logowania przed próbą połączenia

bool loginSuccessful = OpenConnection();

if (loginSuccessful)
{
CloseConnection(); // Zamknij połączenie po sprawdzeniu logowania
}

return loginSuccessful;
}

private bool OpenConnection()
{
try
{
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
return true;
}
catch (MySqlException ex)
{
switch (ex.Number)
{
case 0:
MessageBox.Show("Cannot connect to server. Contact administrator");
break;
case 1045:
MessageBox.Show("Invalid username/password, please try again");
break;
default:
MessageBox.Show($"Database Error: {ex.Message}");
break;
}
return false;
}
}

public bool CloseConnection()
{
try
{
connection.Close();
return true;
}
catch (MySqlException ex)
{
MessageBox.Show($"Database Error: {ex.Message}");
return false;
}
}

//another functions...
}
}

LoginForm.cs
using System;
using System.Windows.Forms;

namespace Projekt_BD
{
public partial class LoginForm : Form
{
private DBConnect dbConnect;

public LoginForm()
{
InitializeComponent();
dbConnect = new DBConnect();
}

private void btnLogin_Click(object sender, EventArgs e)
{
string login = textBox1.Text.ToString();
string password = maskedTextBox1.Text.ToString();

// Sprawdzenie poprawności danych logowania
if (dbConnect.CheckLogin(login, password))
{
// Jeśli dane są poprawne, ustaw DialogResult na OK
this.DialogResult = DialogResult.OK;
}
else
{
MessageBox.Show("Nieprawidłowe dane logowania. Spróbuj ponownie.");
}
}
}
}


Вот мой пример метода в классе DBConnect
public int Count()
{
string query = "SELECT COUNT(*) FROM tasks;";

if (OpenConnection())
{
try
{
MySqlCommand cmd = new MySqlCommand(query, connection);
int count = Convert.ToInt32(cmd.ExecuteScalar());
return count;
}
catch (MySqlException ex)
{
MessageBox.Show($"Database Error: {ex.Message}");
return -1;
}
finally
{
CloseConnection();
}
}

return -1;
}

...а вот фрагмент вызова этого метода:
Form1.cs
else if (button == button8)
{
DBConnect db = new DBConnect();
int count = db.Count();
label22.Text = count.ToString();
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... -data-base

Вернуться в «C#»