关于数据库文件被独占的问题

cpp_1 2015-06-04 10:23:25

我现在遇到一个奇怪的问题
数据库:sqlite
用的DLL:System.Data.SQLite 版本:1.0.97.0
现在奇怪的是,第一次执行的时候,可以先复制,在读取数据库内容
当第二次click的时候,他就报,数据库被另一个进度占用
如果我把数据读取这一行去行,不管多少次click都可以正常复制/黏贴
数据库链接我也正常关闭了,怎么还会被占用着,好奇怪

private void button3_Click(object sender, EventArgs e)
{
if(pda.pda_to_pc(out message))
{
new model_class.sqlite_db().read();  (这一行和数据库有关系的去掉就可以正常复制/黏贴了,加了就不行)
}
}
========================================================
pda_to_pc里面就只有这一个工作
RemoteFile.CopyFileFromDevice(dev, pda_path, Path.Combine(pc_path,pda_path, true);
复制文件

public class sqlite_db
{
public void read()
{
string connectString = @"Data Source=abc.db;Pooling=true;FailIfMissing=false";

SQLiteConnection conn = new SQLiteConnection(connectString);

conn.Open();

SQLiteCommand cmd = conn.CreateCommand();

cmd.CommandText = "SELECT * FROM t1 ";

cmd.CommandType = CommandType.Text;

using (SQLiteDataReader reader = cmd.ExecuteReader())
{

while (reader.Read())
{ }
}
}
}
...全文
163 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp_1 2015-06-04
  • 打赏
  • 举报
回复
我刚刚想回这个 我现在发现,最小代码,我只留这三行 string connectString = @"Data Source=db.db;Pooling=true;FailIfMissing=false"; SQLiteConnection conn = new SQLiteConnection(connectString); conn.Open(); conn.Close(); 只留这几行,只要OPEN过,就独占,用close和Dispose都没用 在然后只能把整个应用程序关掉,这个文件才可以解除锁定 好奇怪
  • 打赏
  • 举报
回复
conn.Close() conn.Dispose();

110,556

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧