无法使用C#在Sqlite中插入多行

时间:2015-04-01 11:39:38

标签: 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 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");
        }

0 个答案:

没有答案