SQLite不保存我插入的数据

时间:2012-09-15 15:16:28

标签: c# sql winforms sqlite sql-insert

我正在搞乱SQL lite并学习它。

我有一个名为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();
}

当我插入一些数据时,我将其称为LoadData(),我可以看到我所做的所有更改。

关闭程序后,然后打开它并拨打LoadData(),我看不到之前插入的新信息。

我得到了一些我使用SQL lite GUI app插入的数据,每次调用LoadData()方法时我都可以看到这些数据,但不是我的。

我是否需要做其他事情以确保SQL lite保存所有数据?

编辑:这就是我如何插入数据,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;
        }
    }

2 个答案:

答案 0 :(得分:1)

您的问题看起来好像您的数据存储在临时数据库中。

请检查您的connectionString是否实际使用(如果文件名为空,SQLite将使用临时数据库)。

要从应用程序内部检查数据库文件名,请像查询一样执行PRAGMA database_list,并检查结果的第三列是否包含您的文件名。示例输出:

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

答案 1 :(得分:0)

尝试执行commit语句,我相信SQLite需要它!您也可以尝试将其全部包装在事务中!