2012-09-15 59 views
1

我搞砸了SQL Lite並學習它。SQLite不保存我插入的數據

我有一個名爲People表,我得到了一些方法連接到數據庫,並做一些東西,像顯示所有的信息。

現在我試圖插入一些數據,在這裏它變得奇怪了。我有這樣的方法:

private void ExecuteQuery(string txtQuery) 
{ 
    SetConnection(); 
    sql_con.Open(); 
    sql_cmd = sql_con.CreateCommand(); 
    sql_cmd.CommandText = txtQuery; 
    sql_cmd.ExecuteNonQuery(); 
    sql_con.Close(); 
} 

,看看我有這種方法的所有數據:

private void LoadData() 
{ 
    SetConnection(); 
    sql_con.Open(); 
    sql_cmd = sql_con.CreateCommand(); 
    string CommandText = "SELECT * FROM People"; 
    DB = new SQLiteDataAdapter(CommandText, sql_con); 
    DS.Reset(); 
    DB.Fill(DS); 
    DT = DS.Tables[0]; 
    dataGridView1.DataSource = DT; 
    sql_con.Close(); 
} 

當我插頁一些數據和右afther它,我稱之爲LoadData(),我可以看到所有我所做的改變。

後,我關閉該程序,然後打開它agian並調用LoadData(),我沒有看到,我之前插入新的信息。

我得到了一些數據,我使用SQL lite GUI應用程序來插入,並且每次調用LoadData()方法時都可以看到該數據,但不是我的。

我需要做其他的財產以後,以確保SQL精簡版保存所有的數據?

編輯:這是我如何插入數據,mybee問題是從這裏?

string insetCommand = "INSERT INTO People Values(2,'" + textBox1.Text + "')"; 

EDIT2:我的connectionString方法

public static string connectionString 
    { 
     get 
     { 
      string database = 
       //AppDomain.CurrentDomain.BaseDirectory + "..\\..\\Database\\ImageLib.s3db"; 
       AppDomain.CurrentDomain.BaseDirectory + "\\DataBase\\myTable2"; 
      string connectionString = 
       @"Data Source=" + Path.GetFullPath(database) + ";Version=3;"; 
      return connectionString; 
     } 
    } 
+0

任何機會,你有SQLite數據庫作爲Visual Studio項目的一部分嗎? – Gigi

+0

我不知道我明白了,我該如何檢查它? – samy

+0

您應該在某處使用.db3文件(或等效文件)。這是包含在VS解決方案中,還是隻是將其作爲單獨的文件加載? – Gigi

回答

1

您的問題看起來好像您的數據存儲在臨時數據庫中。

請檢查您的connectionString實際使用(SQLite的將使用臨時數據庫如果文件名是空的)。

從應用程序中查看數據庫文件名,執行PRAGMA database_list像查詢和檢查結果的第三列包含文件名。示例輸出:

> pragma database_list; 
seq name file 
----- ------ ---------- 
0  main /tmp/test.db 
+0

將我的dababase文件的名稱更改爲myTable2.db,並將其更改爲連接字符串,現在它可以正常工作。謝謝你! – samy

+0

奇怪,我做了一些測試,但它仍然無法正常工作。我如何執行PRAGMA database_list? (我不知道它)。 thx – samy

+0

而不是'string CommandText =「SELECT * FROM People」;'使用'string CommandText =「PRAGMA database_list」;'。 –

0

嘗試執行COMMIT語句,我相信的是SQLite的需要的!您也可以嘗試將其全部包裝在交易中!

+0

因爲你說我嘗試做一個轉換,但我得到了同樣的結果。程序工作時,我可以看到表格中的變化。但是,當我關閉它,然後重新打開它,我不能看到我與轉換添加的新數據。任何其他想法? – samy

+0

當你不使用'BEGIN' /'END TRANSACTION'命令時,SQLite會在每個命令後自動提交。 –