我已经奔溃,找不到问题,求解

我和我的代码互怼 2021-01-05 01:49:27

using System;
using System.Data.SQLite;
using System.Windows.Forms;

namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
sqlite sqlite = new sqlite("devices", "dev");
}


}
class sqlite
{
//全局变量
SQLiteConnection m_dbConnection;

//构造函数
public sqlite(string db_name, string table_name)
{
createNewDatabase(db_name);
connectToDatabase(db_name);

// 创表并创建字段: name varchar(20), model varchar(20), sn varchar(20)
createTable(table_name);

// 插入数据 (name, model, sn)
insert(table_name, "小米", "米3", "sn123456");

// 查询数据
Select(table_name);
}

//创建数据库
void createNewDatabase(string db_name)
{
SQLiteConnection.CreateFile($"{db_name}.sqlite");
}

//创建一个连接到指定数据库
void connectToDatabase(string db_name)
{
m_dbConnection = new SQLiteConnection($"Data Source={db_name}.sqlite;Version=3;");
m_dbConnection.Open();
}

//在指定数据库中创建一个table
void createTable(string table_name)
{
string sql = $"create table {table_name} (name varchar(20), model varchar(20), sn varchar(20))";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
}

//插入一些数据
void insert(string table_name, string name, string model, string sn)
{
string sql = $"insert into {table_name} (name, model, sn) values ('{name}', '{model}', '{sn}')";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
}

//使用sql查询语句,并显示结果
void Select(string table_name)
{
string sql = $"select * from {table_name}";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
MessageBox.Show(
"\tname: " + reader["name"] +
"\tmodel: " + reader["model"] +
"\tsn: " + reader["sn"]);
}

}


}



以上这段在一个临时的新建的项目中单独使用,全功能正常

// ===========================================================================
我把以上代码整个复制到另外一个项目里就出错,我找不到问题了,求教各位大神

...全文
3279 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy_wanhl 2021-01-07
你先用准确的做。再仔细比对。就可以找到错在哪了。
  • 打赏
  • 举报
回复
andy_wanhl 2021-01-07
https://download.csdn.net/download/andy_wanhl/12007418 C# 操作SQLite示例源码 给你这个地址。直接可以读库入库。 资源也可以直接给你。但我不知道怎么给。
  • 打赏
  • 举报
回复
良朋 2021-01-07
复制过去的? namespace改一致了吗?
  • 打赏
  • 举报
回复
xian_wwq 2021-01-07
BadImageFormatException基本就是 由于选择x86和x64不匹配导致的 为了定位问题,可以先把所有相关功能全部选择为x86。 用anycpu往往不能实现any
  • 打赏
  • 举报
回复
泡泡龙 2021-01-07
引用 10 楼 我和我的代码互怼 的回复:
[quote=引用 6 楼 泡泡龙 的回复:]sqlite需要两个dll,x86和x64
这个倒是有点区别,两个项目都是PM安装,然后正常using引用,唯一的区别还真就是能用的项目里面真有这两个文件,不能用的这个项目却没有这两个文件,我试着复制过来,结果还是不能运行[/quote] 在执行程序目录中再建立两个目录,x64和x86,把对应的SQLite.Interop.dll放里面,同时注意你使用的System.Data.SQLite.dll是哪个编译版本,具体官网有说明。一般是350多k的那个
  • 打赏
  • 举报
回复
datafansbj 2021-01-06
SQLite 在 .Net 里引用类库是区分 x86 和 x64 的,在我的项目里是这样放置的:


如果项目编译为 AnyCPU,需要在项目启动时判断当前环境是不是 64 位系统,如果是,需要将 x64 下的 DLL 复制到程序目录。
  • 打赏
  • 举报
回复
引用 6 楼 泡泡龙 的回复:
sqlite需要两个dll,x86和x64
这个倒是有点区别,两个项目都是PM安装,然后正常using引用,唯一的区别还真就是能用的项目里面真有这两个文件,不能用的这个项目却没有这两个文件,我试着复制过来,结果还是不能运行
  • 打赏
  • 举报
回复
引用 7 楼 正怒月神 的回复:
dll中 的版本是多少? "Data Source={db_name}.sqlite;Version=3;"
我把这句删除了也不行
  • 打赏
  • 举报
回复
引用 3 楼 真的小白啊 的回复:
[quote=引用 1 楼 我和我的代码互怼 的回复:]两个项目都是在PM里面安装的SQLite: install-package system.data.sqlite.x64
安装的是x64的,把项目也改成x64的[/quote] 项目本身就是X64的
  • 打赏
  • 举报
回复
正怒月神 2021-01-05
dll中 的版本是多少? "Data Source={db_name}.sqlite;Version=3;"
  • 打赏
  • 举报
回复
泡泡龙 2021-01-05
sqlite需要两个dll,x86和x64
  • 打赏
  • 举报
回复
独立观察员 2021-01-05
可能默认情况该 dll 未复制到运行目录,手动复制过去试试。
  • 打赏
  • 举报
回复
引用 2 楼 wanghui0380 的回复:
先检查Environment.Is64BitProcess 这个看看
这个是从哪里检查?新手不太会...
  • 打赏
  • 举报
回复
真的小白啊 2021-01-05
引用 1 楼 我和我的代码互怼 的回复:
两个项目都是在PM里面安装的SQLite: install-package system.data.sqlite.x64
安装的是x64的,把项目也改成x64的
  • 打赏
  • 举报
回复
wanghui0380 2021-01-05
先检查Environment.Is64BitProcess 这个看看
  • 打赏
  • 举报
回复
两个项目都是在PM里面安装的SQLite: install-package system.data.sqlite.x64
  • 打赏
  • 举报
回复
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2021-01-05 01:49
社区公告

让您成为最强悍的C#开发者