How does the transaction work? I'm new to databases. I found this on
the android documentation

   db.beginTransaction();
   try {
     ...
     db.setTransactionSuccessful();
   } finally {
     db.endTransaction();
   }

Should I implement it like this:


                    int i = 0;
                    while (( line = input.readLine()) != null){
                        if(i % 100 == 0) {
                               DB.beginTransaction();
                               Try {
                                DB.execSQL("INSERT OR IGNORE INTO
english(word) VALUES
                                        DB.setTransactionSuccessfull
();
                                } Finally {
                                        DB.endTransaction();
                               }

On 31 Maj, 14:13, Mark Murphy <mmur...@commonsware.com> wrote:
> kaloer wrote:
> > Hi,
> > I am developing an application that, as the first thing, puts all
> > lines from a txt-file to a sqlite database. There is about 100.000
> > words that should be added to the database, and this takes almost an
> > hour to do.
> > Is there a better way to do this, fx. to have a database in the res/
> > raw resources if it is possible.
> > This is my currently way to do it:
>
> > public void getWords(final Context context, final InputStream aFile) {
> >         try {
> >              InputStreamReader reader = new InputStreamReader(aFile,
> > Charset.forName("UTF-8"));
> >              BufferedReader input =  new BufferedReader(reader);
> >              try {
> >                    DB = context.openOrCreateDatabase(DATABASE_NAME, 1, 
> > null);
> >                    DB.execSQL("DELETE FROM english");
> >                String line = input.readLine();
> >                int i = 0;
> >                while (( line = input.readLine()) != null){
> >                    try {
> >                            DB.execSQL("INSERT OR IGNORE INTO english(word) 
> > VALUES
> > ('" + line + "')");
> >                    }
> >                    catch (Exception e) {
> >                            Log.e("kaloer", e.getMessage());
> >                                    }
> >                    if(i % 100 == 0) {
> >                                            Log.d("progress", 
> > Integer.toString(i));
> >                                            try {
> >                                                    Thread.sleep(100);
> >                                                    } 
> > catch(InterruptedException e) {
> >                                                    }
> >                            }
> >                    i++;
> >                }
> >              } catch (IOException e) {
> >                            e.printStackTrace();
> >                    }
> >              finally {
> >                     try {
> >                                    input.close();
> >                            } catch (IOException e) {
> >                                    e.printStackTrace();
> >                            }
> >                     DB.close();
> >                    }
> >            }
> >         return;
>
> >     }
>
> 1. Right now, you are doing 100,000 transactions. Wrap your own
> transaction around the INSERT loop, one for every 1,000 words or something.
>
> 2. Create the SQLite database on your development PC and package it as a
> raw resource or asset. Then, before you need it, copy it from the
> resource to the appropriate databases/ directory by reading from a raw
> resource or asset stream. Downside #1: if SQLite ever changes its
> database format, you're in trouble. Downside #2: you take up double the
> memory.
>
> 3. Create the SQLite database on your development PC and download it off
> the Internet before first use. Downside: if SQLite ever changes its
> database format, you're in trouble.
>
> 4. Use some other data structure and library than SQLite.
>
> --
> Mark Murphy (a Commons 
> Guy)http://commonsware.com|http://twitter.com/commonsguy
>
> _The Busy Coder's Guide to Android Development_ Version 2.0 Available!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to