Я новичок в C#, и я пытаюсь создать страницу входа в систему, где пользователь вводит имя пользователя и пароль. Затем это считывается из базы данных, чтобы проверить, что имя пользователя и пароль находятся там. Я установил соединение и, похоже, работает, потому что в этом коде, если я введу заголовок столбца, он позволит мне войти, но не какие-либо значения из этого столбца. Как я могу получить значения, которые он принимает?C# log in page verification from database
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace BrokerSolution
{
public partial class LogIn : Form
{
public static String User ;
public static String pass;
public LogIn()
{
InitializeComponent();
}
private bool ValidateFunction(string User, string pass)
{
bool boolReturnvalue = false;
String strConnection = "Server=****; Database=*****; User Id=******; password=*****";
SqlConnection UGIcon = new SqlConnection(strConnection);
String LogInQuery = "SELECT user_name, sign_in FROM Users";
SqlCommand loginCommand = new SqlCommand(LogInQuery, UGIcon);
SqlDataReader dr;
UGIcon.Open();
dr = loginCommand.ExecuteReader();
while (dr.Read())
{
if ((User == dr["user_name"].ToString()) & (pass == dr["sign_in"].ToString()))
{
boolReturnvalue = true;
}
dr.Close();
return boolReturnvalue;
}
return boolReturnvalue;
}
private void button1_Click(object sender, EventArgs e)
{
User = UsernametextBox.Text; //
pass = PasswordtextBox.Text;
SqlDataReader dr;
if (User.Equals(_40029562DataSet.users.user_nameColumn.ToString()))
{new Dashboard().Show();}
else
{
new NewQuote().Show();
}
}
}
}
Вы получаете все столбцы, используйте что-то вроде «SELECT user_name FROM Users WHERE sign_in = @password AND user_name = @username», и, таким образом, если ничего не было возвращено, они дали плохие учетные данные. – Jonesopolis
также просто возвращает true, когда вы находите хит в вашем операторе if остальная часть цикла while была бы ненужной в этом пункте – Jonesopolis