[英]SQLite doesn't save data I inserted
我在弄乱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应用程序插入的,每次调用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;
}
}
您的问题看起来好像您的数据存储在临时数据库中。
请检查您的connectionString
是否被实际使用(如果文件名为空,SQLite将使用一个临时数据库)。
要从应用程序内部检查数据库文件名,请像查询一样执行PRAGMA database_list
并检查结果的第三列是否包含您的文件名。 输出示例:
> pragma database_list;
seq name file
----- ------ ----------
0 main /tmp/test.db
尝试执行一个commit语句,我相信SQLite需要它! 您也可以尝试将所有内容包装在交易中!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.