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

SQLite数据库用户名列表无法在ListBox显示问题求助

修复ListBox不显示SQLite用户名列表的问题

嘿,我帮你找出几个导致ListBox没内容的核心问题,咱们一个个来解决:

  • 事件绑定完全错了:你把加载数据的代码放在了SelectedIndexChanged事件里——这个事件只有当用户点击ListBox改变选中项时才会触发!程序启动后根本不会执行这段加载代码。你应该把这段逻辑移到窗体的Load事件里,或者在窗体初始化的时候手动调用一个专门的加载方法。

  • DataReader的遍历方式不对:SQLiteDataReader(也就是你代码里的non变量)用foreach遍历的话,拿到的是DbDataRecord对象,直接把这个对象加到ListBox里,它只会显示对象的类型名称,而不是你要的用户名。你得通过字段名提取实际的字符串值:USR["Username"].ToString()。

  • 数据库资源没正确管理:你的代码里没确保连接是打开的,也没释放连接/命令/reader资源,很容易导致连接泄漏或者读取失败。建议用using语句来自动管理这些资源,不用手动关闭。

这里是修复后的完整代码示例:

// 把这段代码放到窗体的Load事件中(记得在窗体设计器里绑定Form_Load事件)
private void YourFormName_Load(object sender, EventArgs e)
{
    // 用using自动释放连接资源
    using (var conn = new SQLiteConnection("你的SQLite连接字符串")) // 替换成你实际的连接字符串
    {
        conn.Open();
        string query = "SELECT Username FROM Userdata";
        
        using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
        {
            using (SQLiteDataReader reader = cmd.ExecuteReader())
            {
                // 先清空ListBox避免重复加载
                UserList.Items.Clear();
                
                // 用Read()循环读取每一行数据
                while (reader.Read())
                {
                    // 提取Username字段的字符串值
                    string username = reader["Username"].ToString();
                    UserList.Items.Add(username);
                }
            }
        }
    }
}

最后再检查几个关键点:

  • 确认你的连接字符串是正确的,数据库文件存在且能正常访问
  • 确认Userdata表确实存在,并且有Username字段
  • 确认表里面有实际的用户数据(空表当然也不会显示内容啦)

内容的提问来源于stack exchange,提问作者We_Go

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:27:55