2016-03-20 7 views
0

最近、私はAndroid Studioを使用して既存のSQLiteデータベースを開くことができるアプリケーションを構築しようとしています。私はまだアンドロイドプログラミングの初心者です...ところで私はまだ私のプロジェクトにリンクしているページ上のコードを実装する方法がわからない...親切で、ここで誰もがあるプリロードされたsqliteデータベースの使い方

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

:データベースをオープンする方法は、私は、このリンクを見つけましたどのように使用するかについての例を作るのを助ける(または少なくともいくらかの方向性を与える)?簡単な例だけで十分です。私は前にthxを使っています:)

+0

これを試したときに何が起こったかを指定します。期待通りに動作しませんでしたか?または何かエラーが表示されますか? –

+0

多分それは私がそれを使用する方法を知らないようです,,,あなたは私にそのリンクからコードを使用するいくつかの例を与えることができますか? :) –

+0

私はまだAndroidプログラミングについては新しいですが、コードを実装する方法について少なくとも1つの例があれば、すぐに理解できます:) –

答えて

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

}