2016-03-20 2 views
0

Недавно я пытаюсь создать приложение, которое может открыть существующую базу данных SQLite с помощью Android Studio, и я все еще новичок в программировании на Android ... когда я искал как открыть базу данных, я нашел эту ссылку:Как использовать предварительно загруженную базу данных sqlite [Android Studio]

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

кстати я до сих пор не знаю, как реализовать код на этой ссылке в мой проект ... есть тут кто-нибудь, кто любезен чтобы помочь сделать примеры (или хотя бы дать некоторое направление) о том, как их использовать? Просто простой пример действительно достаточно для меня ... thx before:

+0

Укажите, что произошло, когда вы пробовали это, Не работали ли вы так, как вы ожидали? или какая-либо ошибка показана? –

+0

Возможно, это больше похоже на то, что я не знаю, как его использовать. ,, могли бы вы дать мне несколько примеров, которые используют код из этой ссылки? :) –

+0

Я все еще новичок в программировании на Android, но я пойму это быстро, если есть хотя бы один пример о том, как реализовать код .. :) –

ответ

0

Вы можете просто использовать новый DBManager(). GetAllCities() в действии.

/** 
* author zaaach on 2016/1/26. 
*/ 
public class DBManager { 
    private static final String ASSETS_NAME = "china_cities.db"; 
    private static final String DB_NAME = "china_cities.db"; 
    private static final String TABLE_NAME = "city"; 
    private static final String NAME = "name"; 
    private static final String PINYIN = "pinyin"; 
    private static final int BUFFER_SIZE = 1024; 
    private String DB_PATH; 
    private Context mContext; 

// public static DBManager init(){ 
//  if (mInstance == null){ 
//   synchronized (DBManager.class){ 
//    if (mInstance != null){ 
//     mInstance = new DBManager(); 
//    } 
//   } 
//  } 
//  return mInstance; 
// } 

    public DBManager(Context context) { 
     this.mContext = context; 
     DB_PATH = File.separator + "data" 
       + Environment.getDataDirectory().getAbsolutePath() + File.separator 
       + context.getPackageName() + File.separator + "databases" + File.separator; 
    } 

    @SuppressWarnings("ResultOfMethodCallIgnored") 
    public void copyDBFile(){ 
     File dir = new File(DB_PATH); 
     if (!dir.exists()){ 
      dir.mkdirs(); 
     } 
     File dbFile = new File(DB_PATH + DB_NAME); 
     if (!dbFile.exists()){ 
      InputStream is; 
      OutputStream os; 
      try { 
       is = mContext.getResources().getAssets().open(ASSETS_NAME); 
       os = new FileOutputStream(dbFile); 
       byte[] buffer = new byte[BUFFER_SIZE]; 
       int length; 
       while ((length = is.read(buffer, 0, buffer.length)) > 0){ 
        os.write(buffer, 0, length); 
       } 
       os.flush(); 
       os.close(); 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 


    public List<City> getAllCities(){ 
     SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null); 
     Cursor cursor = db.rawQuery("select * from " + TABLE_NAME, null); 
     List<City> result = new ArrayList<>(); 
     City city; 
     while (cursor.moveToNext()){ 
      String name = cursor.getString(cursor.getColumnIndex(NAME)); 
      String pinyin = cursor.getString(cursor.getColumnIndex(PINYIN)); 
      city = new City(name, pinyin); 
      result.add(city); 
     } 
     cursor.close(); 
     db.close(); 
     Collections.sort(result, new CityComparator()); 
     return result; 
    } 

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