Вот как я это делаю с winforms
В базе данных создайте таблицу USERS
со столбцами USERID
, PASS
, DISPLAY_NAME
, EMAIL
, ANYTHING YOU WANT TO STORE FOR EACH USER
....
Создайте новый класс (.cs file
) и назовите его CurrentUser
Внутри него создайте public static vars
- Тип данных, который доступен из любого места в коде (запись / чтение) - длякаждый столбец в базе данных.
Таким образом, класс будет выглядеть следующим образом:
public class CurrentUser
{
public static int userId;
public static string pass;
public static string displayName;
public static string email;
//every other column you added
}
Теперь создайте код для входа, подобный этому
private void button1_Click(object sender, EventArgs e)
{
using(SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\sit\Desktop\25June_LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonAnalysis.mdf;Integrated Security=True");
{
conn.Open();
using(SqlCommand cmd = new SqlCommand("SELECT PASS, USERID, DISPLAY_NAME, FROM USERS WHERE EMAIL = @MAIL", conn)
{
cmd.Parameters.AddWithValue("@MAIL", textBox1.Text);
SqlDataReader dr = cmd.ExecuteReader():
if(dr.Read()) //We do IF since we only need first one
{
//Now we check if typed password is equal to password from database
if(dr[0].ToString().Equals(textBox2.Text))
{
this.Hide();
Home_Page hp = new Home_Page();
hp.Show();
//Here we store current user data
CurrentUser.userId = Convert.ToInt32(dr[1]);
CurrentUser.pass = dr[0].ToString();
CurrentUser.displayName = dr[2].ToString();
CurrentUser.email = textBox1.Text;
}
else //Passwords doesn't match
{
MessageBox.Show("Wrong password. Try again");
}
}
else //If it hasn't found anyone with that email that mean email is incorect
{
MessageBox.Show("E-mail doesn't exist!");
}
}
}
}
А теперь в любом классе / форме вынаходятся (внутри вашего пространства имен), вы можете получить доступ к данным текущего пользователя, скажем, string displayName = CurrentUser.displayName
.
. Или, если вы хотите установить метку с приветственным сообщением, вы можете сделать
label1.Text = "Welcome, " + CurrentUser.displayName + "!";
Или лучше
label1.Text = String.Format("Welcome, {0}!", CurrentUser.displayName);
Или, если вы хотите отобразить MessageBox со всеми данными, просто сделайте
string[] msg = {
String.Format("Welcome, {0}.", CurrentUser.displayName),
String.Format("Your ID is: {0} while your e-mail is {1}!", CurrentUser.userId, CurrentUser.email)
};
MessageBox.Show(String.Joing(Environment.NewLine, msg));