如何在Visual Studio 2022 WinForm中连接本地SQLite库并填充DataGridView
实现SQLite数据填充至DataGridView及增删操作
一、确认SQLite依赖安装
首先确保项目已安装SQLite相关NuGet包:右键项目→管理NuGet程序包,搜索并安装Microsoft.Data.Sqlite(官方维护,兼容性更好)。
二、填充数据到DataGridView
在窗体加载事件中编写数据绑定逻辑,示例代码如下(假设你的用户表名为Users):
private void Form1_Load(object sender, EventArgs e) { // 数据库连接字符串,根据实际文件路径调整 string connString = @"Data Source=Welcome.db;Version=3;"; using (SqliteConnection conn = new SqliteConnection(connString)) { // 查询用户表所有数据,替换为你的实际查询语句 string query = "SELECT * FROM Users"; SqliteDataAdapter adapter = new SqliteDataAdapter(query, conn); DataTable userTable = new DataTable(); // 填充数据到DataTable adapter.Fill(userTable); // 将DataTable绑定到DataGridView dataGridView1.DataSource = userTable; // 可选:自定义列显示(替换为你的实际列名) dataGridView1.Columns["UserId"].HeaderText = "用户ID"; dataGridView1.Columns["UserName"].HeaderText = "用户名"; // 隐藏不需要显示的列(如主键) // dataGridView1.Columns["UserId"].Visible = false; } }
三、实现添加用户操作
添加按钮点击事件逻辑(假设你有输入用户名、密码的TextBox控件txtUserName、txtPassword):
private void btnAdd_Click(object sender, EventArgs e) { string userName = txtUserName.Text.Trim(); string password = txtPassword.Text.Trim(); if (string.IsNullOrEmpty(userName)) { MessageBox.Show("请输入用户名"); return; } string connString = @"Data Source=Welcome.db;Version=3;"; using (SqliteConnection conn = new SqliteConnection(connString)) { conn.Open(); // 参数化查询避免SQL注入 string query = "INSERT INTO Users (UserName, Password) VALUES (@UserName, @Password)"; using (SqliteCommand cmd = new SqliteCommand(query, conn)) { cmd.Parameters.AddWithValue("@UserName", userName); cmd.Parameters.AddWithValue("@Password", password); int rowsAffected = cmd.ExecuteNonQuery(); if (rowsAffected > 0) { MessageBox.Show("添加成功"); // 重新加载数据刷新表格 Form1_Load(sender, e); // 清空输入框 txtUserName.Clear(); txtPassword.Clear(); } else { MessageBox.Show("添加失败"); } } } }
四、实现删除用户操作
删除按钮点击事件逻辑(通过选中DataGridView行删除):
private void btnDelete_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count == 0) { MessageBox.Show("请选择要删除的用户"); return; } // 获取选中行的主键值(替换为你的实际主键列名) int userId = (int)dataGridView1.SelectedRows[0].Cells["UserId"].Value; DialogResult confirm = MessageBox.Show("确定删除该用户?", "确认删除", MessageBoxButtons.YesNo); if (confirm != DialogResult.Yes) return; string connString = @"Data Source=Welcome.db;Version=3;"; using (SqliteConnection conn = new SqliteConnection(connString)) { conn.Open(); string query = "DELETE FROM Users WHERE UserId = @UserId"; using (SqliteCommand cmd = new SqliteCommand(query, conn)) { cmd.Parameters.AddWithValue("@UserId", userId); int rowsAffected = cmd.ExecuteNonQuery(); if (rowsAffected > 0) { MessageBox.Show("删除成功"); // 重新加载数据刷新表格 Form1_Load(sender, e); } else { MessageBox.Show("删除失败"); } } } }
关键注意事项
- 替换代码中的
Users表名、列名(如UserId、UserName)为你数据库中的实际名称 - 若数据库文件不在项目输出目录,需修改连接字符串为完整路径(如
@"Data Source=C:\YourFolder\Welcome.db;Version=3;") - 建议将DataGridView的
ReadOnly属性设为true,避免用户直接修改表格内容,仅通过按钮操作增删
内容的提问来源于stack exchange,提问作者Dodo
相关产品推荐
相关产品推荐

