Sqlite 奇怪的结果

Sqlite 奇怪的结果,sqlite,Sqlite,当我第一次运行它时,在“last\u insert\u rowid”附近出现了一个异常。这是指最后一次插入;。如果我将游标设置为line command.CommandText=并再次运行它,就可以了 有什么好处?最后一个插入行ID似乎工作正常,为什么第二次插入后的最后一个插入行ID不工作 我尝试在执行后将最后一个\u insert\u rowid()移动到,但仍然出现错误。有什么好处 using (var trans = connection.BeginTransaction(

当我第一次运行它时,在“last\u insert\u rowid”附近出现了一个异常
。这是指最后一次插入;。如果我将游标设置为line command.CommandText=并再次运行它,就可以了

有什么好处?最后一个插入行ID似乎工作正常,为什么第二次插入后的最后一个插入行ID不工作

我尝试在执行后将最后一个\u insert\u rowid()移动到,但仍然出现错误。有什么好处

        using (var trans = connection.BeginTransaction())
        {
            command.CommandText = 
                "INSERT INTO link_list(link, status, hash_type, hash_id) " +
                "VALUES(@link, @status, @hash_type, @hash_id);" +
                "INSERT INTO active_dl(linkId, orderNo) " +
                "VALUES(last_insert_rowid(), (SELECT COUNT(*) FROM active_dl)); last_insert_rowid();";
            command.Parameters.Add("@link", System.Data.DbType.String).Value = link;
            command.Parameters.Add("@status", System.Data.DbType.Int32).Value = SiteBase.Status.none;
            command.Parameters.Add("@hash_type", System.Data.DbType.Int32).Value = 0;
            command.Parameters.Add("@hash_id", System.Data.DbType.Int32).Value = 0;
            int rowid = command.ExecuteNonQuery();
            trans.Commit();
        }

为什么最后一个\u insert_rowid()在那里?在第二次插入之后,您调用last_insert_rowid,而不使用select或任何东西来标识您要对其执行的操作


您必须在其前面放置一个select来检索值,不是吗?

您正试图在一条语句中执行两个sql命令。您需要将这两条语句拆分为两个调用,并从第一条语句返回插入的id


另一个建议是存储过程,但我认为sqlite不支持这些。

问题标题缺乏明确性:“奇怪的结果加上”什么?请注意,ExecuteOnQuery不返回受影响的行数吗?如果你想返回最后一个插入的id,你必须使用ExecuteScalar,我想是的。语法错误使我看不到这一点。这少了一个让我吃惊的虫子。谢谢你。把一个选择放在前面的工作。我想知道为什么当我将断点向上移动并第二次运行它时,它没有给我一个错误(这是不一致的)