2012-09-15 63 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会在每个命令后自动提交。 –