[chronojump] Country creation as a transaction
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Country creation as a transaction
- Date: Sun, 2 Nov 2014 23:55:48 +0000 (UTC)
commit 60a9141e929ae2d63ceb120b023f21aae49a0527
Author: Xavier de Blas <xaviblas gmail com>
Date: Mon Nov 3 00:55:31 2014 +0100
Country creation as a transaction
src/sqlite/country.cs | 44 ++++++++++++++++++++++++++++----------------
src/sqlite/encoder.cs | 20 +++++++++++++++-----
2 files changed, 43 insertions(+), 21 deletions(-)
---
diff --git a/src/sqlite/country.cs b/src/sqlite/country.cs
index f26d408..ad80a7b 100644
--- a/src/sqlite/country.cs
+++ b/src/sqlite/country.cs
@@ -48,19 +48,30 @@ class SqliteCountry : Sqlite
{
conversionSubRateTotal = countries.Length;
conversionSubRate = 0;
- foreach(string myString in countries) {
- //put in db only english name
- string [] strFull = myString.Split(new char[] {':'});
- Insert(
- true, //dbconOpened
- strFull[3], //code
- strFull[1], //name (english)
- strFull[0] //continent
- );
- conversionSubRate ++;
+
+ using(SqliteTransaction tr = dbcon.BeginTransaction())
+ {
+ using (SqliteCommand dbcmdTr = dbcon.CreateCommand())
+ {
+ dbcmdTr.Transaction = tr;
+
+ foreach(string myString in countries) {
+ //put in db only english name
+ string [] strFull = myString.Split(new char[] {':'});
+ Insert(
+ true, //dbconOpened
+ dbcmdTr,
+ strFull[3], //code
+ strFull[1], //name (english)
+ strFull[0] //continent
+ );
+ conversionSubRate ++;
+ }
+ }
+ tr.Commit();
}
}
- public static int Insert(bool dbconOpened, string code, string nameEnglish, string continent)
+ public static void Insert(bool dbconOpened, SqliteCommand mycmd, string code, string nameEnglish,
string continent)
{
if(! dbconOpened)
Sqlite.Open();
@@ -72,19 +83,20 @@ class SqliteCountry : Sqlite
" (uniqueID, code, name, continent) VALUES (NULL, \"" + code + "\", \"" +
nameEnglish + "\", \"" + continent + "\")";
- dbcmd.CommandText = myString;
- dbcmd.ExecuteNonQuery();
+ mycmd.CommandText = myString;
+ Log.WriteLine(mycmd.CommandText.ToString());
+ mycmd.ExecuteNonQuery();
+ /*
//int myLast = dbcon.LastInsertRowId;
//http://stackoverflow.com/questions/4341178/getting-the-last-insert-id-with-sqlite-net-in-c
myString = @"select last_insert_rowid()";
- dbcmd.CommandText = myString;
+ mycmd.CommandText = myString;
int myLast = Convert.ToInt32(dbcmd.ExecuteScalar()); // Need to type-cast since
`ExecuteScalar` returns an object.
+ */
if(! dbconOpened)
Sqlite.Close();
-
- return myLast;
}
public static string [] SelectCountriesOfAContinent(string continent, bool insertUndefined)
diff --git a/src/sqlite/encoder.cs b/src/sqlite/encoder.cs
index 889a682..7149584 100644
--- a/src/sqlite/encoder.cs
+++ b/src/sqlite/encoder.cs
@@ -104,16 +104,26 @@ class SqliteEncoder : Sqlite
return myLast;
}
-
+
+ //normal Update call dbcmd will be used
public static void Update(bool dbconOpened, EncoderSQL es)
{
+ update(dbconOpened, es, dbcmd);
+ }
+ //Transaction Update call dbcmdTr will be used
+ public static void Update(bool dbconOpened, EncoderSQL es, SqliteCommand dbcmdTr)
+ {
+ update(dbconOpened, es, dbcmdTr);
+ }
+ private static void update(bool dbconOpened, EncoderSQL es, SqliteCommand mycmd)
+ {
if(! dbconOpened)
Sqlite.Open();
if(es.uniqueID == "-1")
es.uniqueID = "NULL";
- dbcmd.CommandText = "UPDATE " + Constants.EncoderTable + " SET " +
+ mycmd.CommandText = "UPDATE " + Constants.EncoderTable + " SET " +
" personID = " + es.personID +
", sessionID = " + es.sessionID +
", exerciseID = " + es.exerciseID +
@@ -134,8 +144,8 @@ class SqliteEncoder : Sqlite
"', future3 = '" + es.future3 +
"' WHERE uniqueID == " + es.uniqueID ;
- Log.WriteLine(dbcmd.CommandText.ToString());
- dbcmd.ExecuteNonQuery();
+ Log.WriteLine(mycmd.CommandText.ToString());
+ mycmd.ExecuteNonQuery();
if(! dbconOpened)
Sqlite.Close();
@@ -159,7 +169,7 @@ class SqliteEncoder : Sqlite
if(eSQL.status != checkboxes[count]) {
eSQL.status = checkboxes[count];
- SqliteEncoder.Update(true, eSQL);
+ SqliteEncoder.Update(true, eSQL, dbcmdTr);
}
count ++;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]