Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用C在Sqlite中插入多行#_C#_Sql_Sqlite - Fatal编程技术网

C# 无法使用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(); }

我知道这是一个非常简单的问题,但我找不到任何能帮助我的答案。 我使用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");
        }

你能显示调用
CreateDb
AddStreamingUrl
的代码吗?@Sima-你不是不止一次调用CreateDb吗(即,不是先插入一行,而是先创建一个全新的空数据库并插入该行)?@Ondrej Svejdar:不,我甚至没有在我的代码中删除我的数据库。因此,如果我添加一个名称相同的新表,SQLite将引发一个异常。您是否在
Passerelle\u StreamingUrl
上设置了断点以确保后续调用使用不同的URL?Passerelle\u StreamingUrl只调用一次。但是我的url参数是相同的。如果其中一个列值与insert查询中的值相同,SQLite是否会更新该行?在这种情况下,我仍然希望插入我的行