Criando banco de dados de aplicativos Android com grande quantidade de dados

O banco de dados do meu aplicativo precisa ser preenchido com muitos dados, poronCreate(), não são apenas algumas instruções create table sql, existem muitas inserções. A solução que escolhi é armazenar todas essas instruções em um arquivo sql localizado em res / raw e que é carregado comResources.openRawResource(id).

Ele funciona bem, mas eu enfrento a questão de codificação, eu tenho alguns caharacters acentuados no arquivo sql que aparece mal no meu aplicativo. Este meu código para fazer isso:

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);
        }

        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);
        }

A solução que encontrei para evitar isso é carregar as instruções sql de um enormestatic final String em vez de um arquivo, e todos os caracteres acentuados aparecem bem.

Mas não há uma maneira mais elegante de carregar instruções de sql do que um grandestatic final String atributo com todas as instruções sql?

questionAnswers(4)

yourAnswerToTheQuestion