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

C#类库项目引用SQLite.dll及跨项目调用问题排查

问题排查与解决方案

一、NuGet依赖与using识别问题

  • 问题原因:NuGet包是项目级依赖,DBControl类库项目若要使用System.Data.SQLite,必须单独安装对应NuGet包,仅靠主项目ADBTest的引用无法包含完整的依赖配置与命名空间映射。
  • 解决步骤:
    1. 在解决方案资源管理器中右键DBControl项目 → 选择「管理NuGet程序包」
    2. 搜索System.Data.SQLite并安装对应版本,确保与ADBTest中安装的版本一致
    3. 安装完成后,using System.Data.SQLite;即可正常识别并使用相关类

二、从frmStart调用DBControl代码的方法

  • 确保DBControl中的类/方法是公共可访问的:比如封装的数据库操作类要声明为public class DBHelper,对外提供的方法也要加public修饰符
  • 在ADBTest项目中添加项目引用:右键ADBTest → 「添加」→ 「项目引用」→ 勾选DBControl
  • 在frmStart中调用示例:
    // 添加命名空间引用(如果DBControl的默认命名空间是DBControl)
    using DBControl;
    
    // 在窗体方法中实例化并调用
    private void btnTest_Click(object sender, EventArgs e)
    {
        var dbHelper = new DBHelper();
        dbHelper.ExecuteQuery("SELECT * FROM YourTable");
        // 调用其他封装好的方法
    }
    

三、数据库文件在解决方案资源管理器中不显示的问题

  • 原因:运行时创建的数据库文件默认生成在项目的Debug输出目录,未被添加到项目文件中,因此不会在解决方案里显示
  • 解决方法:
    1. 打开ADBTest项目的Debug文件夹,找到生成的.db文件
    2. 在解决方案资源管理器中右键ADBTest项目 → 「添加」→ 「现有项」→ 选中该.db文件
    3. 选中添加后的.db文件,在属性窗口设置「复制到输出目录」为「如果较新则复制」,避免后续运行时覆盖或丢失

四、代码设计优化建议

  • 遵循单一职责原则:将所有数据库CRUD操作封装在DBControl类库中,ADBTest仅负责UI交互与业务逻辑调用,不直接操作SQLite API
  • 在DBControl中封装数据库连接管理:比如实现单例模式的连接对象,或自动处理连接的打开/关闭,避免主项目重复编写连接代码
  • 统一异常处理:在DBControl中捕获数据库操作异常,封装成自定义异常或返回统一的结果对象,主项目只需处理业务层面的异常逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:07:21