2014-04-10 64 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