Hi all,

The database of my application need to be filled with a lot of data,
so during onCreate(), it's not only some create table sql
instructions, there is a lot of inserts. The solution I chose is to
store all this instructions in a sql file located in res/raw and which
is loaded with Resources.openRawResource(id).

It works well but I face to encoding issue, I have some accentuated
caharacters in the sql file which appears bad in my application. This
my code to do this :

  public String getFileContent(Resources resources, int rawId) throws
IOException
  {
    InputStream is = resources.openRawResource(rawId);
    int size = is.available();
    // Read the entire asset into a local byte buffer.
    byte[] buffer = new byte[size];
    is.read(buffer);
    is.close();
    // Convert the buffer into a string.
    return new String(buffer);
  }

public void onCreate(SQLiteDatabase db) {
                        try {
                                // get file content
                                String sqlCode = getFileContent(mCtx
                                                .getResources(), 
R.raw.db_create);
                                // execute code
                                for (String sqlStatements : sqlCode.split(";")) 
{
                                        db.execSQL(sqlStatements);
                                }
                                db.execSQL(HappyContactsDb.DB_CREATE);
                                Log.v("Creating database done.");
                        } catch (IOException e) {
                                // Should never happen!
                                Log.e("Error reading sql file " + 
e.getMessage(), e);
                                throw new RuntimeException(e);
                        } catch (SQLException e) {
                                Log.e("Error executing sql code " + 
e.getMessage(), e);
                                throw new RuntimeException(e);
                }

The solution I found to avoid this is to load the sql instructions
from a huge static final string instead of a file, and all
accentutated characters appears well.

But Isn't there a more elegant way to load sql instructions than a big
static final String attribute with all sql instructions ?

Thanks in advance

Thomas

-- 
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en

Reply via email to