C# 无法使用C在Sqlite中插入多行#
我知道这是一个非常简单的问题,但我找不到任何能帮助我的答案。 我使用C#连接到SQLITE数据库并插入一些数据。 代码如下:C# 无法使用C在Sqlite中插入多行#,c#,sql,sqlite,C#,Sql,Sqlite,我知道这是一个非常简单的问题,但我找不到任何能帮助我的答案。 我使用C#连接到SQLITE数据库并插入一些数据。 代码如下: private void OpenDb() { this.m_handle = new SQLiteConnection("Data Source=" + m_filename + ".sqlite3;Version=3;"); this.m_handle.Open(); }
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");
}
你能显示调用
CreateDb
和AddStreamingUrl
的代码吗?@Sima-你不是不止一次调用CreateDb吗(即,不是先插入一行,而是先创建一个全新的空数据库并插入该行)?@Ondrej Svejdar:不,我甚至没有在我的代码中删除我的数据库。因此,如果我添加一个名称相同的新表,SQLite将引发一个异常。您是否在Passerelle\u StreamingUrl
上设置了断点以确保后续调用使用不同的URL?Passerelle\u StreamingUrl只调用一次。但是我的url参数是相同的。如果其中一个列值与insert查询中的值相同,SQLite是否会更新该行?在这种情况下,我仍然希望插入我的行