我正在使用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();\""