VB.net中SQLite数据库连接失败:BadImageFormatException求助
解决SQLite连接时的System.BadImageFormatException错误
问题原因
出现System.BadImageFormatException几乎都是平台架构不匹配导致的:
- 项目的编译目标平台(x86/x64/Any CPU)与SQLite的原生二进制文件(sqlite3.dll)架构不一致。比如你下载了64位的SQLite库,但项目以32位模式运行,或者反之。
- 手动部署时缺失对应架构的原生依赖库,或是NuGet包安装不完整,未自动匹配对应架构。
解决步骤
统一编译平台
右键项目 → 属性 → 编译 → 目标平台,选择明确的架构(比如x64),和你使用的SQLite库架构保持一致。避免使用Any CPU(尤其是在32位系统或启用了“首选32位”选项时)。正确使用NuGet包推荐方式
卸载现有SQLite相关包,直接安装System.Data.SQLite.Core包,它会根据你的编译平台自动下载对应架构的原生依赖。如果需要完整工具链,也可以安装System.Data.SQLite完整包。手动部署原生库可选
若坚持手动从官网下载二进制文件,需将对应架构的sqlite3.dll复制到项目的输出目录(如bin/x64/Debug),确保和程序运行的架构完全匹配。
可运行的示例代码
Imports System.Data.SQLite Imports System.IO Public Class Form1 Private connectionString As String Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 使用Path.Combine避免路径拼接错误 Dim exePath As String = Path.GetDirectoryName(Application.ExecutablePath) Dim dbPath As String = Path.Combine(exePath, "NamesTest.db") ' 添加Version=3明确指定SQLite版本,避免兼容问题 connectionString = $"Data Source={dbPath};Version=3;" End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 使用Using语句自动释放连接资源 Using SQLiteConn As New SQLiteConnection(connectionString) Try SQLiteConn.Open() MessageBox.Show("数据库连接成功!") Catch ex As Exception MessageBox.Show($"连接失败:{ex.Message}") End Try End Using End Sub End Class
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

