C#类库项目引用SQLite.dll及跨项目调用问题排查
问题排查与解决方案
一、NuGet依赖与using识别问题
- 问题原因:NuGet包是项目级依赖,
DBControl类库项目若要使用System.Data.SQLite,必须单独安装对应NuGet包,仅靠主项目ADBTest的引用无法包含完整的依赖配置与命名空间映射。 - 解决步骤:
- 在解决方案资源管理器中右键
DBControl项目 → 选择「管理NuGet程序包」 - 搜索
System.Data.SQLite并安装对应版本,确保与ADBTest中安装的版本一致 - 安装完成后,
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输出目录,未被添加到项目文件中,因此不会在解决方案里显示 - 解决方法:
- 打开
ADBTest项目的Debug文件夹,找到生成的.db文件 - 在解决方案资源管理器中右键
ADBTest项目 → 「添加」→ 「现有项」→ 选中该.db文件 - 选中添加后的
.db文件,在属性窗口设置「复制到输出目录」为「如果较新则复制」,避免后续运行时覆盖或丢失
- 打开
四、代码设计优化建议
- 遵循单一职责原则:将所有数据库CRUD操作封装在
DBControl类库中,ADBTest仅负责UI交互与业务逻辑调用,不直接操作SQLite API - 在
DBControl中封装数据库连接管理:比如实现单例模式的连接对象,或自动处理连接的打开/关闭,避免主项目重复编写连接代码 - 统一异常处理:在
DBControl中捕获数据库操作异常,封装成自定义异常或返回统一的结果对象,主项目只需处理业务层面的异常逻辑
内容的提问来源于stack exchange,提问作者Vector
相关产品推荐
相关产品推荐

