Android sqlite数据库未在我的文件中创建

Android sqlite数据库未在我的文件中创建,android,sqlite,Android,Sqlite,你好,朋友,我不想通过查询创建sqlite数据库,所以我写了下面的代码 public class DBHandler extends SQLiteOpenHelper { // All Static variables // Database Version private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "abc"; //

你好,朋友,我不想通过查询创建sqlite数据库,所以我写了下面的代码

public class DBHandler extends SQLiteOpenHelper {

// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "abc";

// Contacts table name
private static final String TABLE_CONTACTS = "user";

// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_EMAIL = "email";
private static final String KEY_NAME = "pin";
private static final String KEY_PH_NO = "key";

public DBHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    System.out.println("Call");
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_EMAIL + " TEXT,"+ KEY_NAME + " TEXT,"
            + KEY_PH_NO + " TEXT" + ")";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)   {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    // Create tables again
    onCreate(db);
}
}
Main.java


当我运行上面的代码时,它不会在我的文件中创建数据库。我的模拟器的explore选项有什么办法可以解决吗?您的所有建议都适用

您可以找到您创建的数据库,名为

使用文件资源管理器将其拉出,并将其重命名为具有.db3扩展名,以便在SQLiteExplorer中使用


使用DDMS的文件资源管理器导航到emulator目录。

您应该尝试下面的代码,检查db文件是否存在。 如果没有,那么创建它

String DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
String DB_NAME = "your_db_name";
public void createDataBase() throws IOException {
    // If database not exists copy it from the assets
    boolean mDataBaseExist = checkDataBase();
    if (!mDataBaseExist) {
        this.getReadableDatabase();
        this.close();
        try {
            // Copy the database from assests
            copyDataBase();
            Log.e(TAG, "createDatabase database created");
        } catch (IOException mIOException) {
            throw new Error("ErrorCopyingDataBase");
        }
    }
}

// Check that the database exists here: /data/data/your package/databases/DatabaseName
private boolean checkDataBase() {

    File dbFile = new File(DB_PATH + DB_NAME);
    Log.v("dbFile", dbFile + "   " + dbFile.exists());
    return dbFile.exists();
}                 


 // Copy the database from assets
private void copyDataBase() throws IOException {
    InputStream mInput = mContext.getAssets().open(DB_NAME);
    String outFileName = DB_PATH + DB_NAME;
    OutputStream mOutput = new FileOutputStream(outFileName);
    byte[] mBuffer = new byte[1024];
    int mLength;
    while ((mLength = mInput.read(mBuffer)) > 0) {
        mOutput.write(mBuffer, 0, mLength);
    }
    mOutput.flush();
    mOutput.close();
    mInput.close();
}
SQLiteOpenHelper在实际需要数据库文件之前不会创建该文件

调用getWritableDatabase

/data/data/<Your-Application-Package-Name>/databases/<your-database-name>
String DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
String DB_NAME = "your_db_name";
public void createDataBase() throws IOException {
    // If database not exists copy it from the assets
    boolean mDataBaseExist = checkDataBase();
    if (!mDataBaseExist) {
        this.getReadableDatabase();
        this.close();
        try {
            // Copy the database from assests
            copyDataBase();
            Log.e(TAG, "createDatabase database created");
        } catch (IOException mIOException) {
            throw new Error("ErrorCopyingDataBase");
        }
    }
}

// Check that the database exists here: /data/data/your package/databases/DatabaseName
private boolean checkDataBase() {

    File dbFile = new File(DB_PATH + DB_NAME);
    Log.v("dbFile", dbFile + "   " + dbFile.exists());
    return dbFile.exists();
}                 


 // Copy the database from assets
private void copyDataBase() throws IOException {
    InputStream mInput = mContext.getAssets().open(DB_NAME);
    String outFileName = DB_PATH + DB_NAME;
    OutputStream mOutput = new FileOutputStream(outFileName);
    byte[] mBuffer = new byte[1024];
    int mLength;
    while ((mLength = mInput.read(mBuffer)) > 0) {
        mOutput.write(mBuffer, 0, mLength);
    }
    mOutput.flush();
    mOutput.close();
    mInput.close();
}