以下代码不在/data/data/中创建数据库文件。应用程序在模拟器中成功运行。 如何使用创建的数据库文件使用第三方应用程序升级该数据库?
tapdb.java
package com.android.tap;
// entry has not been cre
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class tapdb {
public static final String KEY_ROWID="_id";
public static final String KEY_CODE="key_code";
public static final String KEY_WORD="word";
public static final String DATABASE_NAME="tapdatabase";
public static final String DATABASE_TABLE="tapData";
public static final int DATABASE_VERSION=1;
private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;
private static class DbHelper extends SQLiteOpenHelper
{
public DbHelper(Context context) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE" + DATABASE_TABLE + "(" +KEY_WORD + "TEXT NOT NULL" KEY_CODE + "LONG);");
db.execSQL("INSERT INTO tapdatabase VALUES('hello',23334);");
db.execSQL("INSERT INTO tapdatabase VALUES('how',242);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE );
onCreate(db);
}
}
public tapdb (Context c)
{
ourContext = c;
}
public tapdb open()
{
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close(){
ourHelper.close();
}
public long createEntry(String word,String keycode){
ContentValues cv = new ContentValues();
cv.put(KEY_WORD, word);
cv.put(KEY_CODE, keycode);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
public String getWord(long l) {
String[] columns = new String[] {KEY_ROWID, KEY_WORD, KEY_CODE};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null);
if (c != null) {
c.moveToFirst();
String hotness = c.getString(1);
return hotness;
}
return null;
}
}
答案 0 :(得分:1)
Android通过使用不同的用户ID运行应用程序来将应用程序彼此分离。数据存储在/data/data/<my.package.name> (数据库也存储在此路径下方)是应用程序专用的,通常不能被其他应用程序访问(除非它们共享相同的用户ID)。
只有root才能访问所有文件。