SQLite可以在插入数据时返回id吗?

时间:2018-03-05 12:46:22

标签: sqlite

我正在使用sqlite3.exe对我的数据库执行查询,使用以下代码。

public static string QueryDB(string query)
{
    string output = System.String.Empty;
    string error = System.String.Empty;

    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    startInfo.FileName = "C:\\sqlite\\sqlite3.exe";
    startInfo.Arguments = "test.db " + query;
    startInfo.UseShellExecute = false;
    startInfo.CreateNoWindow = true;
    startInfo.RedirectStandardError = true;
    startInfo.RedirectStandardOutput = true;
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

    try
    {
        using(System.Diagnostics.Process sqlite3 = System.Diagnostics.Process.Start(startInfo))
        {
            output = sqlite3.StandardOutput.ReadToEnd();
            error = sqlite3.StandardError.ReadToEnd();
            sqlite3.WaitForExit();
        }
    }
    catch (System.Exception ex)
    {
        System.Console.WriteLine(ex.ToString());
        return null;
    }
    return output;
}  

我正在将数据插入表中,我希望它返回插入数据的id。有没有办法让SQLite这样做?

例如,我的查询可能看起来像"INSERT INTO mytable (some_values) VALUES ('some value');"。运行此查询后,我希望output包含插入数据的rowid。有没有办法做到这一点(命令行开关等)?

可能的解决方法是针对数据库运行两个命令。首先插入数据,然后获取最后插入的行ID。在这种情况下,查询看起来像"\"INSERT INTO mytable (some_values) VALUES ('some value'); SELECT last_insert_rowid();\""

1 个答案:

答案 0 :(得分:0)

你会考虑这个:

select max(id) from your_table_name;

或嵌入式函数last_insert_rowid()