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

VB.net中SQLite数据库连接失败:BadImageFormatException求助

解决SQLite连接时的System.BadImageFormatException错误

问题原因

出现System.BadImageFormatException几乎都是平台架构不匹配导致的:

  • 项目的编译目标平台(x86/x64/Any CPU)与SQLite的原生二进制文件(sqlite3.dll)架构不一致。比如你下载了64位的SQLite库,但项目以32位模式运行,或者反之。
  • 手动部署时缺失对应架构的原生依赖库,或是NuGet包安装不完整,未自动匹配对应架构。

解决步骤

  1. 统一编译平台
    右键项目 → 属性 → 编译 → 目标平台,选择明确的架构(比如x64),和你使用的SQLite库架构保持一致。避免使用Any CPU(尤其是在32位系统或启用了“首选32位”选项时)。

  2. 正确使用NuGet包推荐方式
    卸载现有SQLite相关包,直接安装System.Data.SQLite.Core包,它会根据你的编译平台自动下载对应架构的原生依赖。如果需要完整工具链,也可以安装System.Data.SQLite完整包。

  3. 手动部署原生库可选
    若坚持手动从官网下载二进制文件,需将对应架构的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:20:25