来访人员登记系统(三)服务端登录界面
主要功能
实现多用户认证登录;
实现用户名和密码输入框内的灰色提示。
登录功能
数据库以本地数据库为例,通过读取数据库中用户名和密码均与输入一致的记录来判断是否为合法管理员。
private void button_Confirm_Click(object sender, EventArgs e)
{
// 服务器选用本地sql服务,需要给足sql用户权限,数据库名称administrator
String connStr = "server=localhost;user=root;password=1010;database=administrator";
MySqlConnection DBconn = new MySqlConnection(connStr);
try
{
DBconn.Open();
// user表存放管理员信息,分别有username和password两个字段
string cmd = "select * from user where username = '" + this.textBox_UserName.Text.Trim().ToString() +
"' and password = '" + this.textBox_Password.Text.Trim().ToString() + "'";
MySqlCommand comm = new MySqlCommand(cmd, DBconn);
MySqlDataReader dr = comm.ExecuteReader();
if (dr.Read())
{
login_user_name = textBox_UserName.Text.Trim().ToString();
dr.Close();
this.Hide();
Form_Main fm = new Form_Main();
fm.ShowDialog();
}
else
{
dr.Close();
MessageBox.Show("用户名或密码错误!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DBconn.Close();
}
}
输入框灰色提示信息的实现
通过在输入框中显示提示信息实现类似于html的input标签中placeholder属性的效果,可在一定程度上美化界面,具体实现过程以用户名输入框为例。注意下面的代码虽然可以实现灰色提示文字,但需要额外在窗体加载事件中加入初始的灰色提示文字,因为这这段代码均为textBox的事件,但窗体加载时任何一个事件都未被触发,也就无法得到想要的灰色文字了。
private void textBox_UserName_Leave(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox_UserName.Text))
{
textBox_UserName.ForeColor = Color.DarkGray;
this.textBox_UserName.Text = "用户名";
}
}
private void textBox_UserName_Enter(object sender, EventArgs e)
{
if (textBox_UserName.Text == "用户名")
{
textBox_UserName.ForeColor = Color.Black;
this.textBox_UserName.Text = "";
}
else
{
textBox_UserName.SelectAll();
}
}
总结
Virtual Studio包含支持MySQL各种功能的包,可以通过NuGet获取;
DataReader最好在不用的时候关掉,避免在程序运行时出现未关闭的报错。