You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:04:55