我是新來的c#,我試圖創建一個用戶輸入用戶名和密碼的頁面登錄。然後,從數據庫讀取這個數據,以驗證user_name和密碼在那裏。我建立了連接,它似乎正在工作,因爲在此代碼中,如果我輸入列的標題,它將允許我登錄,但不是來自該列的任何值。我如何得到它接受的價值?c#登錄頁面從數據庫驗證
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