2015-04-23 3 views
1

У меня есть две базы данных для поддержки двух языков для моего приложения.Как использовать несколько баз данных, например, несколько языков в android

Я хочу изменить базу данных при изменении языка из настроек.

Возможно ли это? Как я могу это сделать?

+0

Вы можете также сделать другую таблицу с именем 'translations', где хранятся все имена и прочее. Например, если у вас есть таблица 'products' с' productid' таблицей 'product_translations' с столбцом' productid', 'languagekey' и трансляцией. (Как раз так я делал это в прошлом) – Bram

+0

ваше среднее - это использование одной базы данных ??? – Hades10

+0

Да Я использовал только одну базу данных, всего 2 таблицы. – Bram

ответ

0

использование Чудакулли решения, вам нужно будет добавить только имя базы данных части, все, что вам нужно добавить класс вы расширяете.

этот пример из библиотеки вы упомянули:

public class MyDatabase extends SQLiteAssetHelper { 


    private static final int DATABASE_VERSION = 1; 

    public MyDatabase(Context context) { 
     // here comes the magic: 
     String dbName = context.getString(R.string.db_name); 
     super(context, dbName , null, DATABASE_VERSION); 
    } 
} 

Другой класс базы данных может быть:

public class MyDatabase2 extends SQLiteAssetHelper { 


    private static final int DATABASE_VERSION = 1; 

    public MyDatabase(Context context) { 
     // here comes the magic: 
     String dbName = context.getString(R.string.db_name_2); 
     super(context, dbName , null, DATABASE_VERSION); 
    } 
} 

Примечание: использовать SQLiteAssetHelper, и нужно создать базу данных самостоятельно, и поместить в папку активов/баз данных.

вы можете создать базу данных SQLite с этим приложением Sqlitebrowser

4

Должна быть обеспечена возможность довольно легко, когда вы предоставите строковый ресурс с именем базы данных:

В /res/values/strings.xml поставить такую ​​строку:

<string name="db_name">database</string> 

В /res/values-de/strings.xml поместить эту строку:

<string name="db_name">database_de</string> 

И в вашем классе DBHelper используйте имя базы данных текущего файла в настоящее время в соответствии с настройками языка:

public class DBHelper extends SQLiteOpenHelper { 

    private final static int DB_VERSION = 1; 
    private static DBHelper sInstance; 

    /** 
    * Provides access to DBHelper singleton. 
    * @param context 
    * @return 
    */ 
    public static DBHelper getInstance(Context context) { 
     // Use the application context, which will ensure that you 
     // don't accidentally leak an Activity's context. 
     // See this article for more information: http://bit.ly/6LRzfx 
     if (sInstance == null) { 
      sInstance = new DBHelper(context.getApplicationContext()); 
     } 
     return sInstance; 
    } 

    /** 
    * Constructor should be private to prevent direct instantiation. 
    * make call to static factory method "getInstance()" instead. 
    */ 
    private DBHelper(Context context) { 
     // here comes the magic: 
     String dbName = context.getString(R.string.db_name); 
     super(context, db_name, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // ... 
    } 

    // ... 
} 
+0

Я попробую. Но у меня есть небольшая проблема. Я использую предварительно загруженную базу данных с помощью этой ссылки: [вспомогательный помощник sqlite для Android] (https://github.com/jgilfelt/android-sqlite-asset-helper). Можете ли вы показать мне, как это сделать? – Hades10

+0

Почему бы вам не спросить @MBH, кто отвечает (это моя копия), которую вы приняли? – Ridcully

Смежные вопросы