I've been using CoolStorage as a replacement for core sqlite libraries.

http://viciproject.com/wiki/projects/coolstorage/home


On 6 August 2012 09:51, Miha Markic <m...@rthand.com> wrote:

>  FYI better if you put it into try/catch or using block, i.e.:****
>
> using (SqliteTransaction trans = connection.BeginTransaction())****
>
> {****
>
> …****
>
>  trans.Commit();****
>
> }****
>
> ** **
>
> If Commit isn't called then Dispose will rollback.****
>
> Anyway, for real speed improvement try DbDataAdapter thing.****
>
> ** **
>
> Miha****
>
> ** **
>
> *From:* John Murray [mailto:j...@murray.gb.com]
> *Sent:* Monday, August 06, 2012 10:48 AM
> *To:* Miha Markic; monodroid@lists.ximian.com
>
> *Subject:* RE: [mono-android] sqlite optimisation****
>
>  ** **
>
> Whoa – brilliant Miha – you have inadvertently given me the answer****
>
> Instead of just putting in ****
>
> connection.BeginTransaction();            ****
>
> I need to create a var to hold the instance and then use that instance to
> commit after the loop thus****
>
>                                 Var   thisinstance =
> connection.BeginTransaction();            ****
>
>                 for (int go = 0; go < selstr2.Count; go++)****
>
>                    {****
>
>                         //cc2 is the connection.command****
>
>                       cc2.CommandText = selstr2[go];   //array selstr
> contains insert statements****
>
>                       cc2.ExecuteNonQuery();****
>
>                    }****
>
>               thisinstance.Commit();****
>
> ** **
>
> ** **
>
> This delivers a significant speed improvement over the previous where it
> was committing each round of the loop.  I had tried all flavours of commit
> until you mentioned that the begintransation()  instance had a commit
> method ** **
>
> The above works beautifully****
>
> Thanks ****
>
> John Murray ****
>
> ** **
>
> ** **
>
> ** **
>
> ** **
>
> *From:* Miha Markic [mailto:m...@rthand.com]
> *Sent:* 05 August 2012 14:01
> *To:* j...@murray.gb.com; Discussions related to Mono for Android
> *Subject:* RE: [mono-android] sqlite optimisation****
>
> ** **
>
> Hi John,****
>
> ** **
>
> BeginTransaction() returns you a SqliteTransaction instance which has both
> Commit() and Rollback() methods.****
>
> However, I doubt that transaction will speed up inserts. Instead, you
> might take a look at UpdateBatchSize property of the DbDataAdapter class.*
> ***
>
> http://msdn.microsoft.com/en-us/library/aadf8fk2.aspx****
>
> I suppose it works as well in M4A.****
>
> ** **
>
> HTH,****
>
> Miha****
>
> ** **
>
> *From:* monodroid-boun...@lists.ximian.com [
> mailto:monodroid-boun...@lists.ximian.com<monodroid-boun...@lists.ximian.com>]
> *On Behalf Of *John Murray
> *Sent:* Sunday, August 05, 2012 1:13 PM
> *To:* monodroid@lists.ximian.com
> *Subject:* [mono-android] sqlite optimisation****
>
> ** **
>
> I am using sqlite in monodroid – I am doing a bulk insert from an external
> source****
>
> I have read there is no inbuilt way of importing a whole xml file into the
> sqlite database****
>
> But one can optimise a loop which inserts line by line by using
> connection.BeginTransation()****
>
> Which is supposed to delay the commit until the loop is over then use
> setTransationSuccessful()****
>
> However in the monodroid library mono.data.sqlite.dll does not seem to
> contain the ‘setTransactionSuccessful’ method****
>
> Nor themethod endTransation())****
>
> Given the insert loop below can anyone tell me if I am barking up the
> wrong tree trying to stall the committing of inserts in this way?  Is there
> any other way to speed up a large insert loop like this?****
>
> If there is a method in Mono.Data.Sqlite for ‘begintransaction()’ where is
> the obverse ‘endtransation’ or ‘settransationsuccessful()’****
>
> As you can see from code below I have also tried various forms of commit.*
> ***
>
> //==================================****
>
> // connection.BeginTransaction();            ****
>
> // connection is a straightforward sqlite connection the above code line
> is available in monodroid****
>
> // however without some commit or endtransation nothing gets written to
> the database****
>
>                 for (int go = 0; go < selstr2.Count; go++)****
>
>                    {****
>
> ** **
>
>                         //cc2 is the connection.command****
>
>                       cc2.CommandText = selstr2[go];   //array selstr
> contains insert statements****
>
>                       cc2.ExecuteNonQuery();****
>
>                    }****
>
>                //connection.setTransationSuccessful();****
>
>                //cc2.Transaction.Commit();****
>
>      connection.Close();****
>
> //===========================================****
>
> ** **
>
> I’d be grateful for any help at all – ****
>
> John Murray****
>
> ** **
>
> ** **
>
> ** **
>
> _______________________________________________
> Monodroid mailing list
> Monodroid@lists.ximian.com
>
> UNSUBSCRIBE INFORMATION:
> http://lists.ximian.com/mailman/listinfo/monodroid
>
>


-- 
Gonçalo Oliveira
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to