我知道这是一个非常简单的问题,但我找不到任何可以帮助我的答案。 我使用C#连接到SQLITE数据库并插入一些数据。 这是代码:
private void OpenDb()
{
this.m_handle = new SQLiteConnection("Data Source=" + m_filename + ".sqlite3;Version=3;");
this.m_handle.Open();
}
private void CloseDb()
{
this.m_handle.Close();
}
private void CreateDb()
{
this.OpenDb();
string query = "CREATE TABLE StreamingUrl ([url] varchar(255) NOT NULL, [DateRequest] TEXT NOT NULL);";
SQLiteCommand command = new SQLiteCommand(query, this.m_handle);
command.ExecuteNonQuery();
this.CloseDb();
}
public void AddStreamingUrl(string url)
{
this.OpenDb();
string query = "INSERT INTO StreamingUrl (url, DateRequest) VALUES ('" + url + "', datetime('now', 'localtime'));";
SQLiteCommand command = new SQLiteCommand(query, this.m_handle);
command.ExecuteNonQuery();
this.CloseDb();
}
我可以创建数据库以及表。当我尝试插入一个数据时,它运行良好。但是,当我尝试添加第二行时它不起作用,sqlite会对其进行更新(DateRequest
更新,所以我认为该行已更新)。我的数据库文件没有作为参考或类似的东西添加到项目中。
当我使用SQLiteAdministrator进行此插入查询时,它可以正常工作。所以我认为我的代码错了,但我无法弄清楚。我没有任何例外或错误。
编辑:这可能很重要,但我的VS解决方案中有两个项目:一个dll和一个exe。代码在dll中,我运行exe项目>我不知道这是否有所改变。 EDIT2:添加了调用CreateDb
的代码。它在我的类构造函数中:
this.m_filename = filename;
if (System.IO.File.Exists(this.m_filename) == false)
{
SQLiteConnection.CreateFile(this.m_filename + ".sqlite3");
this.CreateDb();
}
AddStreamingUrl
由一个事件调用,因此我无法向您显示整个代码。以下是我认为有趣的部分:
this.NetworkManager.StreamingUrl += Passerelle_StreamingUrl;
事件发生后:
void Passerelle_StreamingUrl(object sender, EventArgs e)
{
log.AddStreamingUrl((e as StreamingUrl).Url);
Console.WriteLine("Done");
}