C# SQLite不';无法保存我插入的数据

C# SQLite不';无法保存我插入的数据,c#,sql,winforms,sqlite,sql-insert,C#,Sql,Winforms,Sqlite,Sql Insert,我正在学习SQLLite 我有一个名为People的表,我有一些方法可以连接到数据库并做一些事情,比如显示所有信息 现在我试着插入一些数据,在这里它为我变得更为复杂。我有这个方法: private void ExecuteQuery(string txtQuery) { SetConnection(); sql_con.Open(); sql_cmd = sql_con.CreateCommand(); sql_cmd.CommandText = txtQuery

我正在学习SQLLite

我有一个名为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();
}
要查看我通过此方法获得的所有数据:

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()
之后,我看不到以前插入的新信息

我得到了一些使用SQLLiteGUI应用程序插入的数据,每次调用
LoadData()
方法时都可以看到这些数据,但不是我的

我是否需要执行其他操作以确保SQLLite保存所有数据

编辑:我就是这样插入数据的,mybee问题出在这里?

string insetCommand = "INSERT INTO People Values(2,'" + textBox1.Text + "')";
EDIT2:我的连接字符串方法

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;
        }
    }

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

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

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

请检查您的
连接字符串是否已实际使用(如果文件名为空,SQLite将使用临时数据库)

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

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

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

请检查您的
连接字符串是否已实际使用(如果文件名为空,SQLite将使用临时数据库)

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

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


正如你说的,我试着做了一个翻译,但我得到了同样的结果。当程序运行时,我可以看到表中的更改。但是,当我关闭它然后重新打开它时,我看不到我在转换中添加的新数据。还有其他想法吗?当您不使用
BEGIN
/
END TRANSACTION
命令时,SQLite将在每个命令后自动提交。正如您所说,我尝试执行了一个TRANSACTION,但得到了相同的结果。当程序运行时,我可以看到表中的更改。但是,当我关闭它然后重新打开它时,我看不到我在转换中添加的新数据。还有其他想法吗?当您不使用
BEGIN
/
END TRANSACTION
命令时,SQLite将在每个命令后自动提交。您是否有SQLite数据库作为Visual Studio项目的一部分?我不太清楚,如何检查它?您应该在某处使用.db3文件(或等效文件)。这是否包含在VS解决方案中,或者您只是将其作为一个单独的文件加载?您是否有SQLite数据库作为Visual Studio项目的一部分?我不确定我是否理解,如何检查它?您应该在某处使用.db3文件(或等效文件)。这是否包含在VS解决方案中,或者您只是将其作为一个单独的文件加载?将我的dababase文件的名称更改为myTable2.db,并在连接字符串中,现在它可以工作了。谢谢你!维尔德,我做了一些测试,但仍然不起作用。如何执行PRAGMA数据库列表?(我不知道)。thxin代替
string CommandText=“选择*来自人物”使用
string CommandText=“PRAGMA数据库列表”。它返回:0 main C:\Users\roei\documents\visual studio 2010\Projects\SmarterSqlLiteTest\SmarterSqlLiteTest\bin\Debug\DataBase\myTable2.db这是您的文件。检查其时间戳在插入后是否更改,或者在重建时是否会自动删除。将我的数据库文件的名称更改为myTable2.db,并在连接字符串中更改,现在它可以工作了。谢谢你!维尔德,我做了一些测试,但仍然不起作用。如何执行PRAGMA数据库列表?(我不知道)。thxin代替
string CommandText=“选择*来自人物”使用
string CommandText=“PRAGMA数据库列表”。它返回:0 main C:\Users\roei\documents\visual studio 2010\Projects\SmarterSqlLiteTest\SmarterSqlLiteTest\bin\Debug\DataBase\myTable2.db这是您的文件。检查其时间戳在插入后是否更改,或者在重建时是否会自动删除。