2014-04-10 4 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, IM запись на пути к "//raw//mydb.db", но не работает ..Android Raw Folder Path

Как я могу решить эту проблему?

+0

этот "//raw//mydb.db" не будет работать, потому что он не существует. также, что вы подразумеваете под словом «но не работает». какая строка не работает, первая, вторая, последняя ??? пожалуйста, напишите достаточно подробностей вместе с stacktrace для нас, чтобы понять. – Setu

ответ

1

У вас есть две проблемы:

  1. //raw//mydb.db не правильный путь

  2. ресурсы только для чтения, и поэтому вы не можете открыть SQLiteDatabase на сырьевой ресурс

Если ваша цель - упаковать базу данных с вашим приложением, то ваше приложение будет использовать в качестве отправной точки во время выполнения, use SQLiteAssetHelper ,

+0

@ user1429570: Я собираюсь предположить, что ваш ответ должен быть комментарием к моему ответу. Вы можете скопировать исходный ресурс в файл, если хотите. Это то, что делает SQLiteAssetHelper'. Однако, независимо от того, как это происходит, ** вам нужен локальный файл **, поскольку SQLite не может использовать необработанный ресурс. – CommonsWare

+0

или как я могу использовать локальный файл db? (не рекомендуется исходная папка) – kibar

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