2016-03-20 14 views
0

son zamanlarda Android Studio'yu kullanarak var olan SQLite veritabanını açabilen bir uygulama oluşturmaya çalışıyorum, ve hala Android programlamada yeni biriyim. veritabanını açmak için bir yol, ben bu bağlantıyı bulundu:önceden yüklenmiş sqlite veritabanını nasıl kullanacağım [Android Studio]

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

btw hala benim projeye bu linke kodunu uygulama nasıl bilmiyorum ... nezaketini burada kimse var mı Örneklerin nasıl kullanıldığına dair (ya da en azından bir yön vermesi) yardımcı olmak için? Sadece basit bir örnek benim için gerçekten yeterli ... thx önce :)

+0

Bunu denediğinizde ne olduğunu belirtin, Beklediğiniz gibi çalışmadı mı? veya gösterilen herhangi bir hata? –

+0

belki nasıl kullanacağımı bilmiyorum, bana bu bağlantıdan kodu kullanan bazı örnekler verebilir misiniz? :) –

+0

Ben hala android programlama hakkında yeni değilim, ancak kodu uygulamak için en az bir örnek varsa bunu hızlı bir şekilde anlayacağım .. :) –

cevap

0

Yeni DBManager(). GetAllCities() etkinliğinde kullanabilirsiniz.

/** 
* 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; 
    } 

} 
İlgili konular