private int SaveDirRow(string dir_path) { DirRowInfo row_info = new DirRowInfo(); DirectoryInfo d_info = new DirectoryInfo(dir_path); row_info.id = next_dir_id; row_info.path = dir_path; row_info.modified = d_info.LastAccessTimeUtc; dirs_to_insert.Add(row_info); next_dir_id++; return(row_info.id); }
/// <summary> /// /// </summary> /// <param name="conn">SQLiteConnection used to execute these queries</param> /// <param name="dir_rows"></param> /// <param name="start">Start index, inclusive</param> /// <param name="end">End index, exclusive</param> private void BatchAddDirs(SQLiteConnection conn, int start, int end) { using (var cmd = new SQLiteCommand(conn)) { using (var transaction = conn.BeginTransaction()) { for (int i = start; i < end; i++) { if (i >= dirs_to_insert.Count()) { break; //Index out of bounds } DirRowInfo curr_row = dirs_to_insert[i]; cmd.CommandText = "INSERT INTO `directories` (`id`, `path`, `modified`) VALUES(@id, @path, @modified)"; cmd.Parameters.Add(new SQLiteParameter("@id", curr_row.id)); cmd.Parameters.Add(new SQLiteParameter("@path", curr_row.path)); cmd.Parameters.Add(new SQLiteParameter("@modified", DateTimeToInt(curr_row.modified))); cmd.ExecuteNonQuery(); } transaction.Commit(); } } }