Android sqlite数据库未在我的文件中创建
你好,朋友,我不想通过查询创建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"; //
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();
}