WPF用户登录界面与数据库交互实现 (wpf用户登录界面数据库)
WPF(Windows Presentation Foundation)是一种微软推出的用于创建桌面应用程序的框架。它结合了多媒体、矢量图形、动画和交互设计的强大功能,可以创建出漂亮、交互性强的用户界面。而数据库操作是大部分应用程序的基础,如何实现WPF用户登录界面与数据库的交互,本文将进行详细讲解。
我们需要创建一个WPF应用程序。在Visual Studio中选择“新建项目”,选择“Visual C#”下的“WPF应用程序”。命名为“Login”,点击“确定”按钮,即可创建WPF应用程序。
接着,在“MnWindow.xaml”中创建用户登录界面。我们可以使用Grid布局,将控件分布在不同的行和列中。如下代码所示:
“`xaml
xmlns=”http://schemas.microsoft.com/winfx/2023/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2023/xaml”
Title=”Login” Height=”250″ Width=”400″>
“`
在以上代码中,我们创建了5个行和2个列,分别用来存储用户名、密码、登录按钮、注册按钮和提示信息。其中,用户名和密码使用TextBox和PasswordBox控件实现输入,登录和注册按钮使用Button控件实现交互,提示信息使用TextBlock控件实现显示。
接着,我们需要在代码中实现登录按钮的点击事件和注册按钮的点击事件。登录事件的代码如下:
“`csharp
private void loginBtn_Click(object sender, RoutedEventArgs e)
{
string user = username.Text;
string pass = password.Password;
if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(pass))
{
message.Text = “用户名或密码不能为空!”;
return;
}
string connectionString = ConfigurationManager.ConnectionStrings[“DefaultConnection”].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
{
string cmdText = “select * from users where username=@username and password=@password”;
SqlCommand cmd = new SqlCommand(cmdText, conn);
SqlParameter paramUsername = new SqlParameter(“@username”, user);
SqlParameter paramPassword = new SqlParameter(“@password”, pass);
cmd.Parameters.Add(paramUsername);
cmd.Parameters.Add(paramPassword);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
message.Text = “登录成功”;
}
else
{
message.Text = “用户名或密码错误!”;
}
}
}
“`
在以上代码中,我们首先获取了输入的用户名和密码,并进行非空判断。然后,我们使用“ConfigurationManager.ConnectionStrings[]”方法获取连接字符串,连接到我们的数据库。接着,通过“select”语句查询用户表,检查输入的用户名和密码是否正确。如果正确,则显示登录成功信息,否则显示错误信息。
当用户点击注册按钮时,将进入注册窗口。注册窗口代码如下:
“`xaml
xmlns=”http://schemas.microsoft.com/winfx/2023/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2023/xaml”
xmlns:d=”http://schemas.microsoft.com/expression/blend/2023″
xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2023″
xmlns:local=”clr-namespace:Login”
mc:Ignorable=”d”
Title=”RegisterWindow” Height=”300″ Width=”400″>
“`
在注册窗口中,我们同样使用Grid布局,实现了输入用户名、密码、确认密码和注册按钮。点击注册按钮后,将进行用户信息的验证,并保存到数据库中。注册按钮的点击事件代码如下:
“`csharp
private void registerBtn_Click(object sender, RoutedEventArgs e)
{
string user = username.Text;
string pass = password.Password;
string confirm = confirmPassword.Password;
if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(pass) || string.IsNullOrEmpty(confirm))
{
message.Text = “用户名或密码不能为空!”;
return;
}
if (pass != confirm)
{
message.Text = “两次输入的密码不一致!”;
return;
}
string connectionString = ConfigurationManager.ConnectionStrings[“DefaultConnection”].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
{
string cmdText = “insert into users values (@username, @password)”;
SqlCommand cmd = new SqlCommand(cmdText, conn);
SqlParameter paramUsername = new SqlParameter(“@username”, user);
SqlParameter paramPassword = new SqlParameter(“@password”, pass);
cmd.Parameters.Add(paramUsername);
cmd.Parameters.Add(paramPassword);
conn.Open();
try
{
cmd.ExecuteNonQuery();
message.Text = “注册成功”;
}
catch
{
message.Text = “注册失败”;
}
}
}
“`
在以上代码中,我们首先获取了输入的用户名、密码和确认密码,并进行非空和密码一致性校验。然后,我们同样通过“ConfigurationManager.ConnectionStrings[]”方法获取连接字符串,连接到我们的数据库。接着,使用“insert into”语句将用户信息保存到数据库中。如果保存成功,则显示注册成功信息,否则显示注册失败信息。
我们需要将注册窗口和登录窗口进行相互跳转。在MnWindow.xaml.cs中添加以下方法:
“`csharp
private void registerBtn_Click(object sender, RoutedEventArgs e)
{
RegisterWindow registerWindow = new RegisterWindow();
registerWindow.ShowDialog();
}
“`
在以上代码中,我们创建了一个RegisterWindow实例,并使用ShowDialog()方法打开它。ShowDialog()方法用于显示一个模态窗口,即必须先关闭模态窗口才能返回到父窗口。
我们同样可以使用以下代码,在RegisterWindow.xaml.cs中打开登录窗口:
“`csharp
private void backBtn_Click(object sender, RoutedEventArgs e)
{
MnWindow mnWindow = new MnWindow();
mnWindow.Show();
this.Close();
}
“`
在以上代码中,我们创建了一个MnWindow实例,并使用Show()方法打开它。Show()方法用于显示一个非模态窗口,即可以同时打开多个非模态窗口。
一下,本文讲述了如何使用WPF创建用户登录界面,并实现与数据库的交互。我们采用了Grid布局,分别实现了用户名和密码的输入,登录和注册按钮的点击事件,以及提示信息的显示。在数据库交互方面,我们使用了SqlConnection、SqlCommand、SqlParameter和SqlDataReader等类,实现了用户信息的查询和保存。我们通过打开和关闭窗口,在登录窗口和注册窗口之间进行相互跳转。在实际开发中,我们可以根据需要对此进行自定义方法和控件的扩展,实现更丰富、更复杂的应用程序。