当前位置: 首页 > news >正文

开源 C# 快速开发(十六)数据库--sqlserver增删改查

         文章的目的为了记录使用C# 开发学习的经历。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

相关链接:

开源 C# 快速开发(一)基础知识

开源 C# 快速开发(二)基础控件

开源 C# 快速开发(三)复杂控件

开源 C# 快速开发(四)自定义控件--波形图

开源 C# 快速开发(五)自定义控件--仪表盘

开源 C# 快速开发(六)自定义控件--圆环

开源 C# 快速开发(七)通讯--串口

开源 C# 快速开发(八)通讯--Tcp服务器端

开源 C# 快速开发(九)通讯--Tcp客户端

开源 C# 快速开发(十)通讯--http客户端

开源 C# 快速开发(十一)线程

开源 C# 快速开发(十二)进程监控

开源 C# 快速开发(十三)进程--管道通讯

开源 C# 快速开发(十四)进程--内存映射

开源 C# 快速开发(十五)进程--windows消息

开源 C# 快速开发(十六)数据库--sqlserver增删改查

推荐链接:

开源 C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

开源 C# .net mvc 开发(六)发送邮件、定时以及CMD编程-CSDN博客

开源 C# .net mvc 开发(七)动态图片、动态表格和json数据生成-CSDN博客

开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用-CSDN博客

开源 C# .net mvc 开发(九)websocket--服务器与客户端的实时通信-CSDN博客

本章节主要内容是:C#对sqlserver数据库,进行增删改查的例子。

目录:

1.源码分析

2.所有源码

3.效果演示

一、源码分析

1. CreateUserTableIfNotExists() 函数
功能:检查并创建用户表

具体实现:

使用 sysobjects 系统表检查 'user' 表是否存在

如果不存在则创建包含以下字段的表:

Id:自增主键(IDENTITY(1,1))

Username:唯一用户名,NVARCHAR(50),非空

Password:密码,NVARCHAR(100),非空

Email:邮箱,NVARCHAR(100),可为空

CreatedDate:创建时间,DATETIME,默认当前时间

LastLogin:最后登录时间,DATETIME,可为空

IsActive:激活状态,BIT,默认激活

执行成功后输出创建成功消息

public void CreateUserTableIfNotExists(){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string createTableSql = @"IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='user' AND xtype='U')BEGINCREATE TABLE [user] (Id INT IDENTITY(1,1) PRIMARY KEY,Username NVARCHAR(50) NOT NULL UNIQUE,Password NVARCHAR(100) NOT NULL,Email NVARCHAR(100),CreatedDate DATETIME NOT NULL DEFAULT GETDATE(),LastLogin DATETIME NULL,IsActive BIT NOT NULL DEFAULT 1)PRINT 'User表创建成功!'END";using (SqlCommand command = new SqlCommand(createTableSql, connection)){command.ExecuteNonQuery();}}}catch (Exception ex){throw new Exception($"创建表失败:{ex.Message}");}}

2. AddUser(string username, string password, string email) 函数
功能:向用户表插入新用户记录

参数处理:

对邮箱参数进行空值检查,如果为空则插入 DBNull.Value

异常处理:

捕获 SQL 异常 2627(唯一约束冲突),抛出"用户名已存在"异常

捕获其他异常并封装为添加用户失败消息

public bool AddUser(string username, string password, string email){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string insertSql = @"INSERT INTO [user] (Username, Password, Email) VALUES (@Username, @Password, @Email)";using (SqlCommand command = new SqlCommand(insertSql, connection)){command.Parameters.AddWithValue("@Username", username);command.Parameters.AddWithValue("@Password", password);command.Parameters.AddWithValue("@Email", string.IsNullOrEmpty(email) ? DBNull.Value : (object)email);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}catch (SqlException sqlEx){if (sqlEx.Number == 2627) // 唯一约束冲突{throw new Exception("用户名已存在!");}throw new Exception($"添加用户失败:{sqlEx.Message}");}catch (Exception ex){throw new Exception($"添加用户失败:{ex.Message}");}}

3. DeleteUser(int userId) 函数
功能:根据用户ID删除用户记录

实现方式:

构建 DELETE 语句,使用参数化查询防止SQL注入

通过 ExecuteNonQuery() 执行删除操作

返回布尔值表示删除是否成功(影响行数 > 0)

public bool DeleteUser(int userId){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string deleteSql = "DELETE FROM [user] WHERE Id = @Id";using (SqlCommand command = new SqlCommand(deleteSql, connection)){command.Parameters.AddWithValue("@Id", userId);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}catch (Exception ex){throw new Exception($"删除用户失败:{ex.Message}");}}

4. UpdateUser(int userId, string username, string password, string email, bool isActive) 函数
功能:更新指定用户的完整信息

更新字段:用户名、密码、邮箱、激活状态

参数处理:

邮箱字段的空值处理与 AddUser 相同

所有字段均参与更新,无选择性更新逻辑

异常处理:包含唯一约束冲突的特殊处理

public bool UpdateUser(int userId, string username, string password, string email, bool isActive){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string updateSql = @"UPDATE [user] SET Username = @Username, Password = @Password, Email = @Email, IsActive = @IsActiveWHERE Id = @Id";using (SqlCommand command = new SqlCommand(updateSql, connection)){command.Parameters.AddWithValue("@Id", userId);command.Parameters.AddWithValue("@Username", username);command.Parameters.AddWithValue("@Password", password);command.Parameters.AddWithValue("@Email", string.IsNullOrEmpty(email) ? DBNull.Value : (object)email);                command.Parameters.AddWithValue("@IsActive", isActive);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}catch (SqlException sqlEx){if (sqlEx.Number == 2627){throw new Exception("用户名已存在!");}throw new Exception($"更新用户失败:{sqlEx.Message}");}catch (Exception ex){throw new Exception($"更新用户失败:{ex.Message}");}}

5. GetAllUsers() 函数
功能:获取所有用户记录

返回类型:DataTable

查询逻辑:

按 Id 排序返回所有用户

使用 SqlDataAdapter 填充 DataTable

包含完整的用户字段选择

public DataTable GetAllUsers(){DataTable dataTable = new DataTable();try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string selectSql = @"SELECT Id,Username,Password,Email,CreatedDate,LastLogin,IsActiveFROM [user] ORDER BY Id";using (SqlCommand command = new SqlCommand(selectSql, connection))using (SqlDataAdapter adapter = new SqlDataAdapter(command)){adapter.Fill(dataTable);}}}catch (Exception ex){throw new Exception($"查询用户失败:{ex.Message}");}return dataTable;}

6. GetUserById(int userId) 函数
功能:根据用户ID精确查询用户

查询方式:使用参数化查询,精确匹配 Id 字段

public DataTable GetUserById(int userId){DataTable dataTable = new DataTable();try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string selectSql = "SELECT * FROM [user] WHERE Id = @Id";using (SqlCommand command = new SqlCommand(selectSql, connection)){command.Parameters.AddWithValue("@Id", userId);using (SqlDataAdapter adapter = new SqlDataAdapter(command)){adapter.Fill(dataTable);}}}}catch (Exception ex){throw new Exception($"查询用户失败:{ex.Message}");}return dataTable;}

7. GetUserByUsername(string username) 函数
功能:根据用户名模糊查询用户

查询方式:使用 LIKE 操作符和 % 通配符进行模糊匹配

参数处理:在参数值前后添加 % 通配符

public DataTable GetUserByUsername(string username){DataTable dataTable = new DataTable();try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string selectSql = "SELECT * FROM [user] WHERE Username LIKE @Username";using (SqlCommand command = new SqlCommand(selectSql, connection)){command.Parameters.AddWithValue("@Username", $"%{username}%");using (SqlDataAdapter adapter = new SqlDataAdapter(command)){adapter.Fill(dataTable);}}}}catch (Exception ex){throw new Exception($"查询用户失败:{ex.Message}");}return dataTable;}

Form1 类详细功能分析
1. 构造函数
初始化流程:

初始化界面组件

创建 UserService 实例

调用 InitializeDatabase()(当前被注释)

调用 LoadUserData() 加载初始数据

        public Form1(){InitializeComponent();InitializeDatabase();LoadUserData();}

2. InitializeDatabase() 函数
功能:初始化数据库表结构

当前状态:表创建功能被注释,仅保留异常处理框架

        private void InitializeDatabase(){try{//userService.CreateUserTableIfNotExists();}catch (Exception ex){MessageBox.Show($"数据库初始化失败:{ex.Message}", "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}

3. btnAdd_Click() 事件处理函数
功能:处理添加用户按钮点击

验证逻辑:

检查用户名和密码是否为空或空白

显示警告消息如果验证失败

执行流程:

调用 userService.AddUser() 添加用户

成功后清空输入框并刷新数据

private void btnAdd_Click(object sender, EventArgs e){try{if (string.IsNullOrWhiteSpace(txtUsername.Text) || string.IsNullOrWhiteSpace(txtPassword.Text)){MessageBox.Show("用户名和密码不能为空!", "警告",MessageBoxButtons.OK, MessageBoxIcon.Warning);return;}bool success = userService.AddUser(txtUsername.Text.Trim(),txtPassword.Text,txtEmail.Text.Trim());if (success){MessageBox.Show("用户添加成功!", "成功",MessageBoxButtons.OK, MessageBoxIcon.Information);ClearInputs();LoadUserData();}}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}

4. btnUpdate_Click() 事件处理函数
功能:处理更新用户按钮点击

前置检查:

验证是否在 DataGridView 中选择了用户

获取当前选中行的用户ID

执行流程:

调用 userService.UpdateUser() 更新用户信息

成功后清空输入并刷新显示

private void btnUpdate_Click(object sender, EventArgs e){if (dataGridView1.CurrentRow == null){MessageBox.Show("请先选择要修改的用户!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);return;}try{int userId = Convert.ToInt32(dataGridView1.CurrentRow.Cells["Id"].Value);bool success = userService.UpdateUser(userId,txtUsername.Text.Trim(),txtPassword.Text,txtEmail.Text.Trim(),chkIsActive.Checked);if (success){MessageBox.Show("用户更新成功!", "成功",MessageBoxButtons.OK, MessageBoxIcon.Information);ClearInputs();LoadUserData();}}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}

5. btnDelete_Click() 事件处理函数
功能:处理删除用户按钮点击

确认机制:

显示确认对话框要求用户确认删除操作

仅在用户选择"是"时执行删除

执行流程:

获取选中行的用户ID

调用 userService.DeleteUser() 删除用户

成功后刷新数据网格

private void btnDelete_Click(object sender, EventArgs e){if (dataGridView1.CurrentRow == null){MessageBox.Show("请先选择要删除的用户!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);return;}var result = MessageBox.Show("确定要删除这个用户吗?", "确认删除",MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (result == DialogResult.Yes){try{int userId = Convert.ToInt32(dataGridView1.CurrentRow.Cells["Id"].Value);bool success = userService.DeleteUser(userId);if (success){MessageBox.Show("用户删除成功!", "成功",MessageBoxButtons.OK, MessageBoxIcon.Information);LoadUserData();}}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}}

6. btnSearch_Click() 事件处理函数
功能:处理搜索用户按钮点击

搜索逻辑:

如果搜索框为空,显示所有用户 (GetAllUsers())

如果搜索框有内容,按用户名模糊搜索 (GetUserByUsername())

结果显示:直接将查询结果绑定到 DataGridView

private void btnSearch_Click(object sender, EventArgs e){try{DataTable users;if (string.IsNullOrWhiteSpace(txtSearch.Text)){users = userService.GetAllUsers();}else{users = userService.GetUserByUsername(txtSearch.Text.Trim());}dataGridView1.DataSource = users;}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}

7. btnRefresh_Click() 事件处理函数
功能:处理刷新按钮点击,重新加载所有用户数据

        private void btnRefresh_Click(object sender, EventArgs e){LoadUserData();}

8. LoadUserData() 函数
功能:加载并显示所有用户数据

界面配置:

将用户数据绑定到 DataGridView

设置列标题的中文显示文本

配置各列的显示名称

private void LoadUserData(){try{DataTable users = userService.GetAllUsers();dataGridView1.DataSource = users;// 设置列标题if (dataGridView1.Columns.Count > 0){dataGridView1.Columns["Id"].HeaderText = "ID";dataGridView1.Columns["Username"].HeaderText = "用户名";dataGridView1.Columns["Password"].HeaderText = "密码";dataGridView1.Columns["Email"].HeaderText = "邮箱";dataGridView1.Columns["CreatedDate"].HeaderText = "创建时间";dataGridView1.Columns["LastLogin"].HeaderText = "最后登录";dataGridView1.Columns["IsActive"].HeaderText = "是否激活";}}catch (Exception ex){MessageBox.Show($"加载数据失败:{ex.Message}", "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}

9. dataGridView1_SelectionChanged() 事件处理函数
功能:处理数据网格选择变化事件

数据绑定:

当用户选择不同行时,自动将选中用户的数据填充到编辑表单

填充字段包括:用户名、密码、邮箱、激活状态

处理空值情况,使用空字符串替代 null 值

        private void dataGridView1_SelectionChanged(object sender, EventArgs e){if (dataGridView1.CurrentRow != null && !dataGridView1.CurrentRow.IsNewRow){DataGridViewRow row = dataGridView1.CurrentRow;txtUsername.Text = row.Cells["Username"].Value?.ToString() ?? "";txtPassword.Text = row.Cells["Password"].Value?.ToString() ?? "";txtEmail.Text = row.Cells["Email"].Value?.ToString() ?? "";chkIsActive.Checked = Convert.ToBoolean(row.Cells["IsActive"].Value);}}

10. ClearInputs() 函数
功能:清空所有输入控件

清理范围:

清空用户名、密码、邮箱文本框

重置激活状态复选框为选中状态

        private void ClearInputs(){txtUsername.Clear();txtPassword.Clear();txtEmail.Clear();chkIsActive.Checked = true;}

二、所有源码

UserService.cs文件源码

using System;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;namespace DatabaseHelper
{public class UserService{//private string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\mydb.mdf;Integrated Security=True;Connect Timeout=30";private string connectionString = @"Data Source = (LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\a\Desktop\APP_C#\16_sqlserver\DatabaseHelper\DatabaseHelper\App_Data\mydb.mdf;Integrated Security=True;Connect Timeout=30";// 创建user表(如果不存在)public void CreateUserTableIfNotExists(){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string createTableSql = @"IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='user' AND xtype='U')BEGINCREATE TABLE [user] (Id INT IDENTITY(1,1) PRIMARY KEY,Username NVARCHAR(50) NOT NULL UNIQUE,Password NVARCHAR(100) NOT NULL,Email NVARCHAR(100),CreatedDate DATETIME NOT NULL DEFAULT GETDATE(),LastLogin DATETIME NULL,IsActive BIT NOT NULL DEFAULT 1)PRINT 'User表创建成功!'END";using (SqlCommand command = new SqlCommand(createTableSql, connection)){command.ExecuteNonQuery();}}}catch (Exception ex){throw new Exception($"创建表失败:{ex.Message}");}}// 增加用户public bool AddUser(string username, string password, string email){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string insertSql = @"INSERT INTO [user] (Username, Password, Email) VALUES (@Username, @Password, @Email)";using (SqlCommand command = new SqlCommand(insertSql, connection)){command.Parameters.AddWithValue("@Username", username);command.Parameters.AddWithValue("@Password", password);command.Parameters.AddWithValue("@Email", string.IsNullOrEmpty(email) ? DBNull.Value : (object)email);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}catch (SqlException sqlEx){if (sqlEx.Number == 2627) // 唯一约束冲突{throw new Exception("用户名已存在!");}throw new Exception($"添加用户失败:{sqlEx.Message}");}catch (Exception ex){throw new Exception($"添加用户失败:{ex.Message}");}}// 删除用户public bool DeleteUser(int userId){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string deleteSql = "DELETE FROM [user] WHERE Id = @Id";using (SqlCommand command = new SqlCommand(deleteSql, connection)){command.Parameters.AddWithValue("@Id", userId);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}catch (Exception ex){throw new Exception($"删除用户失败:{ex.Message}");}}// 修改用户public bool UpdateUser(int userId, string username, string password, string email, bool isActive){try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string updateSql = @"UPDATE [user] SET Username = @Username, Password = @Password, Email = @Email, IsActive = @IsActiveWHERE Id = @Id";using (SqlCommand command = new SqlCommand(updateSql, connection)){command.Parameters.AddWithValue("@Id", userId);command.Parameters.AddWithValue("@Username", username);command.Parameters.AddWithValue("@Password", password);command.Parameters.AddWithValue("@Email", string.IsNullOrEmpty(email) ? DBNull.Value : (object)email);                command.Parameters.AddWithValue("@IsActive", isActive);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}catch (SqlException sqlEx){if (sqlEx.Number == 2627){throw new Exception("用户名已存在!");}throw new Exception($"更新用户失败:{sqlEx.Message}");}catch (Exception ex){throw new Exception($"更新用户失败:{ex.Message}");}}// 查询所有用户public DataTable GetAllUsers(){DataTable dataTable = new DataTable();try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string selectSql = @"SELECT Id,Username,Password,Email,CreatedDate,LastLogin,IsActiveFROM [user] ORDER BY Id";using (SqlCommand command = new SqlCommand(selectSql, connection))using (SqlDataAdapter adapter = new SqlDataAdapter(command)){adapter.Fill(dataTable);}}}catch (Exception ex){throw new Exception($"查询用户失败:{ex.Message}");}return dataTable;}// 根据ID查询用户public DataTable GetUserById(int userId){DataTable dataTable = new DataTable();try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string selectSql = "SELECT * FROM [user] WHERE Id = @Id";using (SqlCommand command = new SqlCommand(selectSql, connection)){command.Parameters.AddWithValue("@Id", userId);using (SqlDataAdapter adapter = new SqlDataAdapter(command)){adapter.Fill(dataTable);}}}}catch (Exception ex){throw new Exception($"查询用户失败:{ex.Message}");}return dataTable;}// 根据用户名查询用户public DataTable GetUserByUsername(string username){DataTable dataTable = new DataTable();try{using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string selectSql = "SELECT * FROM [user] WHERE Username LIKE @Username";using (SqlCommand command = new SqlCommand(selectSql, connection)){command.Parameters.AddWithValue("@Username", $"%{username}%");using (SqlDataAdapter adapter = new SqlDataAdapter(command)){adapter.Fill(dataTable);}}}}catch (Exception ex){throw new Exception($"查询用户失败:{ex.Message}");}return dataTable;}}
}

Form1.cs文件源码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DatabaseHelper
{public partial class Form1 : Form{private UserService userService = new UserService();public Form1(){InitializeComponent();InitializeDatabase();LoadUserData();}private void InitializeDatabase(){try{//userService.CreateUserTableIfNotExists();}catch (Exception ex){MessageBox.Show($"数据库初始化失败:{ex.Message}", "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}// 添加用户private void btnAdd_Click(object sender, EventArgs e){try{if (string.IsNullOrWhiteSpace(txtUsername.Text) || string.IsNullOrWhiteSpace(txtPassword.Text)){MessageBox.Show("用户名和密码不能为空!", "警告",MessageBoxButtons.OK, MessageBoxIcon.Warning);return;}bool success = userService.AddUser(txtUsername.Text.Trim(),txtPassword.Text,txtEmail.Text.Trim());if (success){MessageBox.Show("用户添加成功!", "成功",MessageBoxButtons.OK, MessageBoxIcon.Information);ClearInputs();LoadUserData();}}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}// 更新用户private void btnUpdate_Click(object sender, EventArgs e){if (dataGridView1.CurrentRow == null){MessageBox.Show("请先选择要修改的用户!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);return;}try{int userId = Convert.ToInt32(dataGridView1.CurrentRow.Cells["Id"].Value);bool success = userService.UpdateUser(userId,txtUsername.Text.Trim(),txtPassword.Text,txtEmail.Text.Trim(),chkIsActive.Checked);if (success){MessageBox.Show("用户更新成功!", "成功",MessageBoxButtons.OK, MessageBoxIcon.Information);ClearInputs();LoadUserData();}}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}// 删除用户private void btnDelete_Click(object sender, EventArgs e){if (dataGridView1.CurrentRow == null){MessageBox.Show("请先选择要删除的用户!", "提示",MessageBoxButtons.OK, MessageBoxIcon.Information);return;}var result = MessageBox.Show("确定要删除这个用户吗?", "确认删除",MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (result == DialogResult.Yes){try{int userId = Convert.ToInt32(dataGridView1.CurrentRow.Cells["Id"].Value);bool success = userService.DeleteUser(userId);if (success){MessageBox.Show("用户删除成功!", "成功",MessageBoxButtons.OK, MessageBoxIcon.Information);LoadUserData();}}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}}// 搜索用户private void btnSearch_Click(object sender, EventArgs e){try{DataTable users;if (string.IsNullOrWhiteSpace(txtSearch.Text)){users = userService.GetAllUsers();}else{users = userService.GetUserByUsername(txtSearch.Text.Trim());}dataGridView1.DataSource = users;}catch (Exception ex){MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}// 刷新数据private void btnRefresh_Click(object sender, EventArgs e){LoadUserData();}// 加载用户数据private void LoadUserData(){try{DataTable users = userService.GetAllUsers();dataGridView1.DataSource = users;// 设置列标题if (dataGridView1.Columns.Count > 0){dataGridView1.Columns["Id"].HeaderText = "ID";dataGridView1.Columns["Username"].HeaderText = "用户名";dataGridView1.Columns["Password"].HeaderText = "密码";dataGridView1.Columns["Email"].HeaderText = "邮箱";dataGridView1.Columns["CreatedDate"].HeaderText = "创建时间";dataGridView1.Columns["LastLogin"].HeaderText = "最后登录";dataGridView1.Columns["IsActive"].HeaderText = "是否激活";}}catch (Exception ex){MessageBox.Show($"加载数据失败:{ex.Message}", "错误",MessageBoxButtons.OK, MessageBoxIcon.Error);}}// DataGridView选择行变化事件private void dataGridView1_SelectionChanged(object sender, EventArgs e){if (dataGridView1.CurrentRow != null && !dataGridView1.CurrentRow.IsNewRow){DataGridViewRow row = dataGridView1.CurrentRow;txtUsername.Text = row.Cells["Username"].Value?.ToString() ?? "";txtPassword.Text = row.Cells["Password"].Value?.ToString() ?? "";txtEmail.Text = row.Cells["Email"].Value?.ToString() ?? "";chkIsActive.Checked = Convert.ToBoolean(row.Cells["IsActive"].Value);}}// 清空输入框private void ClearInputs(){txtUsername.Clear();txtPassword.Clear();txtEmail.Clear();chkIsActive.Checked = true;}}
}

三、效果演示

可以进行用户的添加,删除,修改和查询

http://www.dtcms.com/a/434531.html

相关文章:

  • 在相亲网站认识了一个做红酒生意的深圳做品牌网站
  • AI Agent 设计模式:从理论到实践的完整指南
  • 池州网站开发公司招聘外贸公司大全
  • WSL的安装与使用详解
  • 内网横向移动技术与防御详解
  • PYTHON:Python 新版本下载安装更新py文件Pycharm运行指南
  • Kubernetes中的service
  • Coze源码分析-资源库-编辑工作流-后端源码-流程/技术/总结
  • 医院网站建设招标公告惠州网站建设科技有限公司
  • 英语学习-Saints043-1
  • 大模型提示学习与思维链
  • 在线公司logo设计河南seo优化
  • 滑动窗口题目:最小覆盖子串
  • 【读书笔记】《深奥的简洁》
  • 支付宝手机网站支付贵阳门户网站
  • macOS 终端配置全攻略:zsh、bash_profile、zprofile、zshrc 到 nvm 配置的完整科普
  • Matlab通过GUI实现点云的Loss配准
  • 用户体验最好的网站做网站 参考文献
  • 离散与连续随机变量
  • 自适应网站好吗电子商务seo名词解释
  • 深入剖析 MySQL 中 binlog 与 redolog:区别、联系及在数据更新中的作用​
  • tensor转numpy,numpy转tensor
  • [创业之路-653]:社会产品与服务的分类
  • 洛谷题解P1249 最大乘积
  • Java使用easypoi填充数据到word
  • 位运算题3:将整数奇偶位互换
  • 计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 卡盟网站顶图怎么做西安知名的集团门户网站建设公司
  • Python基础入门例程84-NP84 列表中第一次出现的位置
  • 基于腾讯CODING Maven的Android库发布