我正在尝试在Androis Studio 2.3中为我的应用程序创建一个SQLite数据库。
我尝试了以下内容 -
方法-1:创建了一个从SQLiteOpenHelper
延伸并覆盖OnCreate
public AppDB(Context context){
super(context, DBName, null, 1);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TableName + " (RecordingID TEXT PRIMARY KEY,RecordItemName TEXT,RecordFilePath TEXT,RecordFileDate TEXT)");
}
方法-2:尝试在我的主要活动OnCreate
SQLiteDatabase db = openOrCreateDatabase("AppDB.db", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS Recordings (RecordingID TEXT PRIMARY KEY,RecordItemName TEXT,RecordFilePath TEXT,RecordFileDate TEXT)");
我的应用在模拟器上启动正常。当我尝试使用Android设备监视器验证创建的数据库时>文件管理器,我无法在 data 文件夹下看到我的数据库。 我是Android新手,无法弄清楚我做错了什么。请告诉我是否可以添加更多详细信息。
答案 0 :(得分:1)
由于Marshmallow之后的权限问题,您必须创建一个23或更低的AVD目标,然后会出现数据。 另一种方法是在canary频道上将SDK更新到3.0版beta 2,虽然它不稳定但是这个问题已经解决,你可以在更高的Apis上访问db。
答案 1 :(得分:0)
您在创建查询中错过了分号。
db.execSQL("CREATE TABLE " + TableName + " (RecordingID TEXT PRIMARY KEY,RecordItemName TEXT,RecordFilePath TEXT,RecordFileDate TEXT);");
答案 2 :(得分:0)
您可以像这样创建数据库,以便我们可以在安装应用程序时创建数据库。
public class DataBaseHelp extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "studentinfo.db";
public static final String TABLE_NAME = "student";
public static final String STUDENT_ID = "id";
public static final String STUDENT_NAME = "name";
public static final String STUDENT_ENROLLMENT_NO = "number";
public static final String STUDENT_CONTACT = "contact_number";
private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + STUDENT_NAME + " TEXT,"
+ STUDENT_ENROLLMENT_NO + " TEXT," + STUDENT_CONTACT + " TEXT" + ")";
public DataBaseHelp(Context context) {
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_USER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE OF EXISTS "+TABLE_NAME);
onCreate(sqLiteDatabase);
}
}