2014-04-10 114 views
0
public class MyActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     SQLiteDatabase db = SQLiteDatabase.openDatabase("//raw//mydb.db", 
       null, 
       SQLiteDatabase.OPEN_READWRITE); 

     if(db.isOpen()) 
      Toast.makeText(getApplicationContext(), "DB opened", 2).show(); 
    } 
} 

在我的原始文件夾中有mydb.db,當我要MYDB,即時通訊寫入連接到路徑「//raw//mydb.db」,但沒有工作..Android的原文件夾路徑

我能如何解決這個問題?

+0

這個「//raw//mydb.db」將不起作用,因爲它不存在。你也是什麼意思「但不工作」。哪一行不工作,第一,第二,最後?請張貼足夠的細節和堆棧跟蹤,以便我們理解。 – Setu

回答

1

你有兩個問題:

  1. //raw//mydb.db是不是一個有效的路徑

  2. 資源是隻讀的,所以你不能在未經處理的資源打開SQLiteDatabase

如果您的目標是使用您的應用打包數據庫,並確保您的應用在運行時用作起點,use SQLiteAssetHelper

+0

@ user1429570:我打算假設你的答案應該是我對答案的評論。如果需要,歡迎將原始資源複製到文件中。這就是'SQLiteAssetHelper'的作用。但是,不管它如何到達那裏,**你都需要一個本地文件**,因爲SQLite不能使用原始資源。 – CommonsWare

+0

或我可以如何使用本地數據庫文件? (不建議原始文件夾) – kibar