数据库无法创建

时间:2013-01-27 16:12:31

标签: android android-sqlite

以下代码不在/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;
}
}

1 个答案:

答案 0 :(得分:1)

Android通过使用不同的用户ID运行应用程序来将应用程序彼此分离。数据存储在/data/data/<my.package.name> (数据库也存储在此路径下方)是应用程序专用的,通常不能被其他应用程序访问(除非它们共享相同的用户ID)。

只有root才能访问所有文件。