Erstellen einer Android App-Datenbank mit großen Datenmengen

Die Datenbank meiner Bewerbung muss mit vielen Daten gefüllt sein, also währendonCreate()Es gibt nicht nur einige SQL-Anweisungen zum Erstellen von Tabellen, sondern auch viele Einfügungen. Die von mir gewählte Lösung besteht darin, alle diese Anweisungen in einer SQL-Datei zu speichern, die sich in res / raw befindet und mit der geladen wirdResources.openRawResource(id).

Es funktioniert gut, aber ich stehe vor Codierungsproblemen. Ich habe einige akzentuierte Zeichen in der SQL-Datei, die in meiner Anwendung als schlecht erscheinen. Dies ist mein Code, um dies zu tun:

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

Die Lösung, die ich gefunden habe, um dies zu vermeiden, ist das Laden der SQL-Anweisungen von einem riesigenstatic final String Anstelle einer Datei werden alle akzentuierten Zeichen gut angezeigt.

Aber gibt es nicht eine elegantere Möglichkeit, SQL-Anweisungen zu laden als eine große?static final String Attribut mit allen SQL-Anweisungen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage