我一直在打“没有这样的表”错误。我使用两个非常相似的数据库帮助程序类。第一个可以在相同的实现下很好地工作,第二个总是使应用程序崩溃,并说没有这样的表!这是正在实现的第一个表的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DatabaseHelper(this);
workoutsCursor = db
.getReadableDatabase()
.rawQuery("SELECT _ID, title " +
"FROM workouts ORDER BY title",
null
);
adapter = new SimpleCursorAdapter(this,
R.layout.list_view_item, workoutsCursor,
new String[]{DatabaseHelper.TITLE},
new int[]{R.id.textViewItem}, 0);
setListAdapter(adapter);
registerForContextMenu(getListView());
}
以及该数据库帮助程序的重写onCreate:
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE workouts (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT);");
}
将此与第二个活动中第二个表的实现及其各自的dbhelper的onCreate进行比较:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nIntent = getIntent();
PID = nIntent.getIntExtra("PID", 0);
String eyedee = Integer.toString(PID);
try {
db = new ExerciseDBHelper(this);
exerciseCursor = db
.getReadableDatabase()
.rawQuery("SELECT _ID, title " +
"FROM exercises WHERE pid = " + eyedee,
null
);
} catch (Exception e){
Log.d("MAKEDB", "that didnt work bruh");
}
adapter = new SimpleCursorAdapter(this,
R.layout.list_view_item, exerciseCursor,
new String[]{ExerciseDBHelper.TITLE},
new int[]{R.id.textViewItem}, 0);
setListAdapter(adapter);
registerForContextMenu(getListView());
和
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE exercises (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, pid INTEGER);");
}
如果有帮助:可以按此方法工作,然后再卸载应用程序并重新安装。
通过使用相同的DatabaseHelper,我能够解决该问题。我的数据库助手的新代码:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="db";
static final String TITLE="title";
static final String TABLE1="CREATE TABLE IF NOT EXISTS workouts (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT);";
static final String TABLE2="CREATE TABLE IF NOT EXISTS exercises (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, pid INTEGER);";
static final String PID="pid";
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, 1); }
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(TABLE1);
db.execSQL(TABLE2);
}
@Override
public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion){
android.util.Log.v("Workouts", "Upgrading database, which will destroy old date");
db.execSQL("DROP TABLE IF EXISTS workouts");
db.execSQL("DROP TABLE IF EXISTS exercises");
onCreate(db);
}
}
向@ joao2fast4u大喊建议!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句