C#窗体-数据库连接及登录功能的实现案例

yizhihongxing

下面是“C#窗体-数据库连接及登录功能的实现案例”的攻略:

1. 案例需求

我们需要开发一个C#窗体应用程序,要求实现以下功能:

  1. 与数据库建立连接
  2. 用户登录功能,登录成功后跳转到主页面
  3. 用户登录失败,展示错误提示

2. 开发步骤

2.1 数据库连接

我们可以使用ADO.NET来实现与数据库的连接。首先需要在项目中添加数据库连接:

  1. 打开Visual Studio,在Solution Explorer中右键单击项目名称
  2. 选择添加 -> 新建项 -> 数据 -> 数据库,命名为Database1.mdf
  3. 双击Database1.mdf文件,在Server Explorer中右键单击数据库名称,选择新建查询
  4. 输入以下SQL语句,创建一个名为Users的表格,并添加两条测试数据:

```sql
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
[Pwd] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

INSERT INTO Users (Name, Pwd) VALUES('user1', '123456');
INSERT INTO Users (Name, Pwd) VALUES('user2', '123456');
```

  1. 单击“运行”按钮,确保查询执行没有问题。

然后就可以在C#代码中进行数据库连接了。以下是连接数据库的代码示例:

using System.Data.SqlClient;

namespace MyNamespace
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                MessageBox.Show("数据库连接成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据库连接失败:" + ex.Message);
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

具体解释如下:

  1. Form1类中,定义了连接字符串connectionString,这里我们使用本地数据库。
  2. button1_Click事件中,创建SqlConnection对象,传入连接字符串参数,调用Open来打开连接。
  3. 如果连接成功会弹出一个消息框,如果连接失败会弹出错误提示。

2.2 登录功能

数据库连接成功后,我们需要实现用户登录功能。以下是登录功能的代码示例:

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
    SqlConnection connection = new SqlConnection(connectionString);
    string name = textBox1.Text.Trim();
    string password = textBox2.Text;

    string sql = $"SELECT COUNT(*) FROM Users WHERE Name=@name AND Pwd=@pwd";
    SqlCommand command = new SqlCommand(sql, connection);
    command.Parameters.AddWithValue("@name", name);
    command.Parameters.AddWithValue("@pwd", password);

    try
    {
        connection.Open();
        int count = Convert.ToInt32(command.ExecuteScalar());
        if (count > 0)
        {
            MessageBox.Show("登录成功!");
        }
        else
        {
            MessageBox.Show("用户名或密码错误!");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("登录失败:" + ex.Message);
    }
    finally
    {
        connection.Close();
    }
}

具体解释如下:

  1. button1_Click事件中,获取用户名和密码。
  2. 构造SQL语句,使用SELECT COUNT(*)来查询是否存在此用户,并使用SqlCommand对象传入参数。
  3. 调用ExecuteScalar方法来执行查询,返回结果为一个整数,此处我们直接判断结果是否大于0即可。
  4. 如果查询结果大于0,表示登录成功,弹出成功提示框,否则弹出失败提示框。
  5. 记得在finally块中关闭数据库连接。

2.3 示例说明

示例一

以下是一个带注释的完整代码示例:

using System;
using System.Data.SqlClient;

namespace MyNamespace
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                MessageBox.Show("数据库连接成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据库连接失败:" + ex.Message);
            }
            finally
            {
                connection.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
            SqlConnection connection = new SqlConnection(connectionString);
            string name = textBox1.Text.Trim();
            string password = textBox2.Text;

            string sql = $"SELECT COUNT(*) FROM Users WHERE Name=@name AND Pwd=@pwd";
            SqlCommand command = new SqlCommand(sql, connection);
            command.Parameters.AddWithValue("@name", name);
            command.Parameters.AddWithValue("@pwd", password);

            try
            {
                connection.Open();
                int count = Convert.ToInt32(command.ExecuteScalar());
                if (count > 0)
                {
                    MessageBox.Show("登录成功!");
                }
                else
                {
                    MessageBox.Show("用户名或密码错误!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("登录失败:" + ex.Message);
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

以上示例可以直接运行,并且弹出的消息框会提示“数据库连接成功”或“数据库连接失败”。

示例二

为了方便测试和展示,我们可以先在Program.cs文件中添加一个数据初始化的方法,用于初始化数据库数据:

class Program
{
    static void Main(string[] args)
    {
        InitTestData();
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new LoginForm());
    }

    static void InitTestData()
    {
        string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string sql = @"
                IF OBJECT_ID('dbo.Users', 'U') IS NULL
                    CREATE TABLE [dbo].[Users] (
                        [Id]    INT          IDENTITY (1, 1) NOT NULL,
                        [Name]  VARCHAR (50) NOT NULL,
                        [Pwd]   VARCHAR (50) NOT NULL,
                        PRIMARY KEY CLUSTERED ([Id] ASC)
                    );
                TRUNCATE TABLE Users;
                INSERT INTO Users (Name, Pwd) VALUES('test', '123456');
            ";
            SqlCommand command = new SqlCommand(sql, connection);
            command.ExecuteNonQuery();
        }
    }
}

运行程序,会自动创建名为Users的表格,并添加一条测试数据。然后修改LoginForm的代码,在登录成功后跳转到一个主界面:

public partial class LoginForm : Form
{
    public LoginForm()
    {
        InitializeComponent();
    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
        string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";
        SqlConnection connection = new SqlConnection(connectionString);
        string name = txtName.Text.Trim();
        string password = txtPassword.Text;

        string sql = $"SELECT COUNT(*) FROM Users WHERE Name=@name AND Pwd=@pwd";
        SqlCommand command = new SqlCommand(sql, connection);
        command.Parameters.AddWithValue("@name", name);
        command.Parameters.AddWithValue("@pwd", password);

        try
        {
            connection.Open();
            int count = Convert.ToInt32(command.ExecuteScalar());
            if (count > 0)
            {
                MessageBox.Show("登录成功!");
                this.Hide();
                MainForm mainForm = new MainForm();
                mainForm.Show();
            }
            else
            {
                MessageBox.Show("用户名或密码错误!");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("登录失败:" + ex.Message);
        }
        finally
        {
            connection.Close();
        }
    }
}

现在运行程序,输入正确的用户名和密码,会弹出“登录成功”的提示框,并跳转到主页面。输入错误的用户名或密码,会弹出“用户名或密码错误”的提示框。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#窗体-数据库连接及登录功能的实现案例 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • MASAMinimalAPI:创建MinimalAPI项目

    项目准备 1.创建项目,选择webapi。取消勾选使用控制器。创建minimal Api项目 2.创建成功后MinimalAPI的接口直接写在program.cs中 3.引入nuget包:Masa.Contrib.Service.MinimalAPIs MinimalAPI改造 1. 在program.cs中加入以下内容 将原有的 var app = bui…

    C# 2023年5月9日
    00
  • ASP.NET MVC前台动态添加文本框并在后台使用FormCollection接收值

    下面是“ASP.NET MVC前台动态添加文本框并在后台使用FormCollection接收值”的完整使用攻略,包括创建视图、创建控制器和两个示例。 步骤1:创建 ASP MVC 项目 在 Visual Studio 中创建名为“DynamicTextBoxDemo”的 ASP.NET MVC 项目。 步骤2:创建视图 在 Views 文件夹中创建为“Ind…

    C# 2023年5月12日
    00
  • 在运行时编辑代码的 .NET 热重载的操作方法

    在运行时编辑代码的 .NET 热重载的操作方法 在 .NET 中,我们可以使用热重载来在运行时编辑代码,而无需重新启动应用程序。这对于开发人员来说非常方便,因为它可以节省大量的时间。本攻略将介绍如何在 .NET 中使用热重载。 步骤 以下是在 .NET 中使用热重载的步骤: 安装 Microsoft.DotNet.Watcher.Tools。 在命令行中运行…

    C# 2023年5月17日
    00
  • ASP.NET MVC实现树形导航菜单

    以下是“ASP.NET MVC实现树形导航菜单”的完整攻略: 什么是ASP.NET MVC实现树形导航菜单 ASP.NET MVC实现树形导航菜单是一种机制,允许开发人在MVC视图页中使用递归法和HTML标记生成树形导航菜单。这种机制可以帮助开发人员更轻地处理导航菜单,并提高用户体验。 ASP.NET MVC实现树形导菜单的步骤 ASP.NET MVC实现树…

    C# 2023年5月12日
    00
  • C#中读取App.config配置文件代码实例

    下面就给您详细讲解一下在C#中读取App.config配置文件的完整攻略。 什么是App.config? 在C#项目中,App.config是存放配置信息的文件,经常用来保存应用程序的配置信息,比如数据库连接字符串、路径等等。在项目中对于一些数据的统一管理是非常有用的,修改方便,且使用配置文件时只需要修改App.config即可不用修改代码。 读取App.c…

    C# 2023年6月1日
    00
  • C#运行程序时阻止关闭显示器和系统待机

    为了防止程序在运行时关闭显示器或使系统进入待机状态,我们需要对程序进行一些设置。 方法1:利用Windows API函数 1. 引用Windows API函数 我们可以使用SetThreadExecutionState这个API函数来实现防止系统进入待机状态和关闭显示器,需要在代码中引用kernel32.dll库和SetThreadExecutionStat…

    C# 2023年6月7日
    00
  • C#控制台程序使用Log4net日志组件详解

    C#控制台程序使用Log4net日志组件详解 Log4net是一个用于记录日志的流行的开源框架,它可以帮助开发者方便地记录应用程序的运行日志,并且支持在运行时动态地控制日志等级和输出目标。本篇攻略将从以下几个方面详细讲解如何在C#控制台程序中使用Log4net日志组件: 安装Log4net并添加配置文件 创建Logger对象 记录日志信息 控制日志等级和输出…

    C# 2023年5月15日
    00
  • C#调用sql2000存储过程方法小结

    下面就是详细讲解“C#调用sql2000存储过程方法小结”的完整攻略。 前提条件 在开始使用C#调用SQL Server 2000存储过程之前,需要满足以下前提条件: 电脑上已安装SQL Server 2000或更高版本,并正确配置SQL Server的连接信息。 电脑上已安装Visual Studio开发工具,并正确配置了数据库连接信息。 步骤 接下来,我…

    C# 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部