У меня есть файл базы данных в активов папок, когда пользователь установить эту программу в первый раз лаунчер я скопировать базу данных из активов в базы данных программыКак использовать базу данных имеющихся в активе с ORMLite
Это мой код:
private static final String DATABASE_NAME= "data.db";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config);
this.myContext = context;
}
/************************************************
* Suggested Copy/Paste Done
************************************************/
@Override
public void onCreate(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource) {
createDataBase();
}
public void createDataBase(){
boolean dbExist = checkDataBase();
if(!dbExist){
try {
copyDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{
String myPath = myContext.getDatabasePath(DATABASE_NAME).getPath();
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){
e.printStackTrace();
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null;
}
private void copyDataBase() throws IOException{
InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
String outFileName = myContext.getDatabasePath(DATABASE_NAME).getPath();
File f = new File(outFileName);
f.getParentFile().mkdirs();
f.createNewFile();
OutputStream myOutput = new FileOutputStream(f);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
проверить базы данных папки в устройстве, и увидеть, что он имеет data.db файл, но в этом файле нет таблицы.
Код, в котором я копирую данные, работает.
Почему data.db не так.
UPDATED:
@DatabaseTable(tableName = "english")
public class Topic {
@DatabaseField(generatedId = true, columnName = "id")
private int id;
@DatabaseField(columnName = "title")
private String title;
@DatabaseField(columnName = "question")
private String question;
@DatabaseField(columnName = "answer")
private String answer;
@DatabaseField(columnName = "audio_url")
private String audioUrl;
@DatabaseField(columnName = "local_url")
private String localUrl;
public Topic() {
}
}
CREATE TABLE `english` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`title` NVARCHAR,
`question` NVARCHAR,
`answer` NVARCHAR,
`audio_url` NVARCHAR,
`local_url` NVARCHAR
);
Правильно ли вы установили исходный файл db? См. Http://stackoverflow.com/a/5799920/420594 относительно android_metadata – drhr
@drhr, pls видят мою конфигурацию в файле модели и когда я делаю базу данных командой sql? –
У меня есть информация об успешной работе команды, когда я помещал data.db в папку с базами данных вручную –