Re: [android-beginners] Creating Database with big amount of data

2009-12-22 Thread David Fire
save the file using utf8 encode this solved similar issues on diferent
plataforms.


2009/12/20 Thomas thomas.bruye...@gmail.com

 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 android-beginners@googlegroups.com
 To unsubscribe from this group, send email to
 android-beginners+unsubscr...@googlegroups.comandroid-beginners%2bunsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/android-beginners?hl=en




-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
()_()signature to help him gain world domination.

-- 
You received this message because you are subscribed to the Google
Groups Android Beginners group.

NEW! Try asking and tagging your question on Stack Overflow at
http://stackoverflow.com/questions/tagged/android

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


[android-beginners] Creating Database with big amount of data

2009-12-20 Thread Thomas
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 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