/// <summary> /// Insert the specified episode. /// </summary> /// <param name='episode'>Episode.</param> public void Insert(List<Episode> episodes) { SQLiteDatabase db = dbHelper.WritableDatabase; DatabaseUtils.InsertHelper ih = new DatabaseUtils.InsertHelper(db, Episode.TABLE_NAME); int colDescription = ih.GetColumnIndex(Episode.COL_DESCRIPTION); int colDuration = ih.GetColumnIndex(Episode.COL_DURATION); int colMyGPOLink = ih.GetColumnIndex(Episode.COL_MYGPO_LINK); int colPosition = ih.GetColumnIndex(Episode.COL_PLAYER_POSITION); int colPodcastTitle = ih.GetColumnIndex(Episode.COL_PODCAST_TITLE); int colPodcastUrl = ih.GetColumnIndex(Episode.COL_PODCAST_URL); int colReleased = ih.GetColumnIndex(Episode.COL_RELEASED); int colStatus = ih.GetColumnIndex(Episode.COL_STATUS); int colTitle = ih.GetColumnIndex(Episode.COL_TITLE); int colUrl = ih.GetColumnIndex(Episode.COL_URL); int colWebsite = ih.GetColumnIndex(Episode.COL_WEBSITE); try { db.BeginTransaction(); foreach(Episode episode in episodes) { ih.PrepareForInsert(); ih.Bind(colDescription, episode.Description); ih.Bind(colDuration, episode.Duration); ih.Bind(colMyGPOLink, episode.MygpoLink != null ? episode.MygpoLink.ToString() : string.Empty); ih.Bind(colPosition, episode.PlayerPosition); ih.Bind(colPodcastTitle, episode.PodcastTitle); ih.Bind(colPodcastUrl, episode.PodcastUrl != null ? episode.PodcastUrl.ToString() : string.Empty); ih.Bind(colReleased, episode.Released.ToString()); ih.Bind(colStatus, episode.Status.ToString()); ih.Bind(colTitle, episode.Title); ih.Bind(colUrl, episode.Url != null ? episode.Url.ToString() : string.Empty); ih.Bind(colWebsite, episode.Website != null ? episode.Website.ToString() : string.Empty); ih.Execute(); } ih.PrepareForInsert(); db.SetTransactionSuccessful(); } finally{ if(ih != null){ ih.Close(); } if(db != null){ db.EndTransaction(); } } }
public void Save(MarkovFactory factory) { Log.Debug ( TAG, "Saving chain." ); myDatabase = context.OpenOrCreateDatabase(DATABASE_NAME, FileCreationMode.Private, null); myDatabase.ExecSQL("DROP TABLE IF EXISTS 'words'"); myDatabase.ExecSQL("CREATE TABLE IF NOT EXISTS 'words' (firstWord TEXT, secondWord TEXT, instanceCount INTEGER NOT NULL);"); var chain = factory.chain; DatabaseUtils.InsertHelper ih = new DatabaseUtils.InsertHelper (myDatabase, "words"); Stopwatch stopwatch = Stopwatch.StartNew(); StringBuilder insertQuery = new StringBuilder(); //insertQuery.Append("INSERT INTO 'words' ('firstWord', 'secondWord', 'instanceCount') VALUES (?, ?, ?)"); myDatabase.BeginTransaction(); string sql = "INSERT INTO 'words' ('firstWord', 'secondWord', 'instanceCount') VALUES (?, ?, ?)"; SQLiteStatement insert = myDatabase.CompileStatement(sql); foreach (KeyValuePair<string, MarkovWord> word in chain) { foreach (KeyValuePair<MarkovWord, int> after in word.Value.afters) { insert.BindString(1, word.Value.word); insert.BindString(2, after.Key.word); insert.BindDouble(3, after.Value); insert.Execute(); } } myDatabase.SetTransactionSuccessful(); myDatabase.EndTransaction(); stopwatch.Stop (); Log.Debug (TAG, "Database insert completed in " + stopwatch.Elapsed.TotalMilliseconds); }