【发布时间】:2018-08-16 14:18:00
【问题描述】:
我不断在另一个表单上收到异常,该表单添加到 sqlite 数据库中,说数据库已锁定,但是当我尝试将数据放入新数据库时,它可以工作。我能得出的唯一结论是数据库没有正确关闭以保持其锁定。有人可以帮忙吗?
SQLiteConnection sqlite_conn = new SQLiteConnection("Data Source=./LibraryDB.db;Version=3;");
SQLiteCommand sqlite_cmd;
SQLiteDataReader sqlite_datareader;
sqlite_conn.Open();
sqlite_cmd = sqlite_conn.CreateCommand();
string query = "SELECT * FROM Books";
sqlite_cmd.CommandText = query;
sqlite_datareader = sqlite_cmd.ExecuteReader();
//Initialise table
listBooks.View = View.Details;
listBooks.GridLines = true;
listBooks.FullRowSelect = true;
listBooks.Columns.Add("ID", 100);
listBooks.Columns.Add("ISBN", 100);
listBooks.Columns.Add("Title", 100);
listBooks.Columns.Add("Author", 100);
listBooks.Columns.Add("Year", 100);
listBooks.Columns.Add("Edition", 100);
listBooks.Columns.Add("TagID", 150);
DataTable booksDataTable = new DataTable();
SQLiteDataAdapter booksDataAdapter = new SQLiteDataAdapter(query, sqlite_conn);
DataSet booksDataSet = new DataSet();
booksDataAdapter.Fill(booksDataSet);
foreach (DataRow row in booksDataSet.Tables[0].Rows)
{
ListViewItem listitem = new ListViewItem(row[0].ToString());
for (int i = 1; i < booksDataSet.Tables[0].Columns.Count; i++)
{
listitem.SubItems.Add(row[i].ToString());
}
listBooks.Items.Add(listitem);
}
sqlite_conn.Close();
【问题讨论】:
-
Database not closed的可能重复
-
根据需要创建、使用和处置您的连接。有方便的
using语句用于此类事情 -
尝试设置为 null : sqlite_conn = null;
-
@jdweng 不幸的是没有骰子
-
Dispose() 怎么样?