我有以下代碼,它讀取dataGridView中的所有數據,並假定將其保存到數據庫中。數據庫在程序退出時不保存
private void datInp_Click(object sender, EventArgs e)
{
SQLiteConnection con = new SQLiteConnection("Data Source=dBase1.sqlite;Version=3;");
con.Open();
SQLiteCommand sqlDatBas = new SQLiteCommand("INSERT INTO table1(column1,column2) VALUES (@c1,@c2)", con);
for (int i = 0; i < dataGridView2.RowCount-1; i++)
{
sqlDatBas.Parameters.AddWithValue("@c1", dataGridView2.Rows[i].Cells[0].Value);
sqlDatBas.Parameters.AddWithValue("@c2", dataGridView2.Rows[i].Cells[1].Value);
sqlDatBas.ExecuteNonQuery();
}
con.Close();
con.Dispose();
}
但是,每當我運行它,並使用該程序,以顯示數據庫的當前狀態,它顯示爲如果數據得到了保存,但是,如果我退出我的程序,然後再次運行它,它只是顯示基礎數據庫,而不添加新添加的數據。是因爲我錯過了一列嗎?由於表格是用ID創建的,但它應該自動增加。以下是表格的創建方式。
CREATE TABLE "table1" ("columnID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , "column1" VARCHAR, "column2" VARCHAR)
我總是用ExecuteNonQuery()
的循環,使所有的數據被添加到數據庫中的每一個傳球后。我在dataGridView中顯示數據庫的當前狀態,並顯示添加的項目,但不是當我重新啓動程序時。我錯過了什麼?
檢查當您構建/啓動應用程序時,您的'SQLite'數據庫文件是否被複制到'bin \ Debug'文件夾。在解決方案資源管理器中,查看數據庫文件的屬性並檢查「複製到輸出目錄」選項的值 – Nino
當前數據庫文件已超過一週;該屬性爲「始終複製」,構建操作爲「內容」。 但是,'bin'和'obj'文件夾在解決方案資源管理器中顯得有點灰。我不知道如何描述它,但文件夾本身看起來像馬里奧的半隱形塊(透明,周圍有白點)。 – EInherjar
好吧,那是你的問題。當你啓動你的應用時,一個空的數據庫將被複制到你保存數據的那個數據庫上。將'Copy to Output directory'選項更改爲'Copy if newer'。這意味着數據庫只有在bin \ Debug文件夾(bin \ Debug是編譯後的exe和dll-s所在的位置)時纔會被複制。 – Nino