如何刪除當前正在使用的SQLLite文件
從網上搜索一大堆,套路幾乎相同,但自己就是不行,怎麼也不行,為什麼不行呢?再次來看,恍然大悟,What?這麼簡單。
一開始代碼如下:
helper.GetConnectionString(schoolStr);//獲取當前連接字元串
using (ConnectionBase conn = ConnectionManager.Instance.Pop())
{
if (conn.State != ConnectionState.Open)
conn.Open();
try
{
helper.GetConnectionString(schoolStr);//獲取當前連接字元串
var curSchoolInfo = schoolDAL.SelectDetail(schoolStr);
if (curSchoolInfo != null)
schoolInfoList.Add(curSchoolInfo);
}
finally
{
conn.Close();
conn.Dispose();
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
修改後代碼如下:
只要把 helper.GetConnectionString(schoolStr部分去掉,放到 helper.GetConnectionString(schoolStr) 部分就好了。
就是這麼簡單的問題,花了2個多小時折騰。
注意 GC.WaitForPendingFinalizers();部分代碼:
如果不加 GC.WaitForPendingFinalizers(); 代碼,表面看著已經釋放了,實則不然,為什麼close()和Dispose()之後任然不能釋放與db文件的連接呢?問度娘,好幾個答案是:Close() ,Dispose() ,但還是不可以,再次問度娘,給出了如下答案:
原因是sqllite在執行 SQLiteConnectionHandle.Dispose()操作的時候,其實並沒有真正的釋放連接,只有顯示調用CLR垃圾回收之後才能真正釋放連接。
中公優就業IT培訓,總有你想學的:http://xue.ujiuye.com
勤工儉學計劃,0元學IT!
http://www.ujiuye.com/zt/qgjx/?wt.bd=mmxtt
找工作太難?我們來幫你一舉拿下!
http://www.ujiuye.com/zt/jycj/?=mmxtt


※四季之後,我能記住的,只有你的名字
※心理測試|直覺哪根最辣?解析你潛藏的個性!
※利用padding實現可控的分隔線
※React渲染問題研究以及Immutable的應用
※設計模式——淺談工廠模式
TAG:IT優就業 |
※蘋果正在研發MicroLED屏幕,將儘快在iPhone上使用
※Life姐教你使用LaTeX
※如何在微服務或Tomcat中配置使用Listener
※如何在 Ubuntu Linux 上使用 KVM 雲鏡像
※Sentinel Wrap使用DNA來顯示食物是否已經變質
※Cobalt Strike中DNS隱蔽隧道的利用,以及使用DLP進行檢測
※PPT/Word/Excel 協同使用,相互轉換的方法其實非常簡單!
※如何使用武器化的PDF文檔來竊取Windows憑據
※使用SQL查詢ElasticSearch
※CodeWarrior IDE使用Tips-使用burner將elf文件轉換生成HEX和BIN文件的方法和步驟詳解
※有道雲筆記是如何使用 TensorFlow Lite 的?
※如何讓您的舊iPhone儘可能長時間運行-使用SparkleComm的IOS用戶注意啦
※如何使用 pdfgrep 從終端搜索 PDF 文件
※SQLAlchemy 使用經驗
※PHP 使用 Redis
※不使用宏的情況 Multi-Stage Word 也可讓用戶中馬
※除了Facebook和Intel,還有誰在數據中心使用OCP設備?
※蘋果下一代iPhone產品iPhone Xs/Plus或使用LG高容量L形電池
※如何使用TensorFlow中的Dataset API
※如何在 Linux 上使用 snap 安裝 Spotify