Я работаю над приложением android, где я импортирую базу данных sqlite в проект Android. База данных отлично работает на эмуляторе, но когда я пытаюсь использовать приложение на моем устройстве он не работает и выводит сообщение: К сожалению, appname остановлено.База данных SQLite, работающая на моем эмуляторе и не работающая с моим устройством
Я положил свою базу данных в папке активов в моем проекте затем использовать этот код, чтобы скопировать его: функция
try {
String destPath = "/data/data/" + getPackageName() + "/databases/MyDB";
File f = new File(destPath);
if (!f.exists()) {
CopyDB(getBaseContext().getAssets().open("mydb"),
new FileOutputStream(destPath));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
COPYDB:
public void CopyDB(InputStream inputStream, OutputStream outputStream)
throws IOException {
//---copy 1K bytes at a time---
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}
DBAdapter Класс:
public class DBAdapter {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "username";
public static final String KEY_PASSWORD = "password";
private static final String DATABASE_NAME = "MyDB";
private static final String DATABASE_TABLE = "users";
private static final int DATABASE_VERSION = 4;
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
}
//---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---retrieves all the users---
public Cursor getAllusers()
{
return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,
KEY_PASSWORD}, null, null, null, null, null);
}
//---retrieves a particular user---
public User getuser(String username) throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_NAME, KEY_PASSWORD}, KEY_NAME + "=" + "'"+username+ "'", null,
null, null, null, null);
if(mCursor.moveToFirst())
{
mCursor.moveToFirst();
User u=new User(Integer.valueOf(mCursor.getString(0)),mCursor.getString(1),mCursor.getString(2));
return u;
}else
return null;
}
}
Большое вам спасибо
сообщение The LogCat показывает ошибку. – Barak
Как проверить logcat во время запуска приложения на устройстве? –
Я попробовал запустить приложение на эмуляторе с более новой версией Android (android 4), как и мой мобильный. Теперь он не работает над новым эмулятором! –