android - 插入列错误(SQLite Android Studio)
问题描述
我不断收到一个错误,它说我的数据库中没有创建任何列,我不知道为什么。下面的错误是我得到的。
错误:表 score 在“INSERT INTO scores(score,scoreName) VALUES (?,?)”中没有名为 score 的列 2021-03-29 19:04:44.590 23125-23125/com.example.assignment3
E/SQLiteDatabase: 插入 score=5 scoreName=Michelle 时出错
DatabaseHandler2.java
public class DatabaseHandler2 extends SQLiteOpenHelper {
public static final String DATABASE = "scoreDatabase";
//tables
public static final String TABLE_SCORES = "scores";
//scores
public static final String KEY_SID = "scoreID";
public static final String KEY_SNAME = "scoreName";
public static final String KEY_SCORE = "score";
public DatabaseHandler2(Context context) {
super(context, DATABASE, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db){
//Creates Tables
String CREATE_SCORES_TABLE = "CREATE TABLE " + TABLE_SCORES + " ("
+ KEY_SID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_SNAME + " TEXT, " + KEY_SCORE + " INT)";
db.execSQL(CREATE_SCORES_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SCORES);
onCreate(db);
}
public void insertScore(String name, int score){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_SNAME, name);
values.put(KEY_SCORE, score);
db.insert(TABLE_SCORES, null, values);
db.close();
}
public Cursor allScores(){
SQLiteDatabase db = this.getWritableDatabase();
return db.rawQuery("SELECT * FROM " + TABLE_SCORES,null);
}
}
Game.java - 使用 DatabaseHandler 的片段
public class Game extends AppCompatActivity {
private int numberCorrect;
@Override
public void onFinish() {
answer0Btn.setEnabled(false);
answer1Btn.setEnabled(false);
answer2Btn.setEnabled(false);
answer3Btn.setEnabled(false);
bottomTxt.setText("Your score: " + numberCorrect + "/" + (game.getTotalQuestions() - 1));
playBtn.setText("Play Again");
playBtn.setVisibility(View.VISIBLE);
DatabaseHandler2 db = new DatabaseHandler2(getApplicationContext());
db.insertScore(getUsername(), numberCorrect);
}
}
}
分数.java
public class Scores extends AppCompatActivity {
TextView allScoresTxt;
Game game = new Game();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scores);
allScoresTxt = findViewById(R.id.allScoresTxt);
DatabaseHandler2 db = new DatabaseHandler2(getApplicationContext());
Cursor cursor = db.allScores();
if (cursor.getCount() == 0) {
allScoresTxt.setText("No Data");
} else {
while (cursor.moveToNext()) {
allScoresTxt.setText("Name: " + cursor.getString(0) + "\t Score: " + cursor.getInt(1) + "\n");
}
}
}
}
解决方案
推荐阅读
- firemonkey - FMX:TMenuItem 快捷键 Ctrl+Alt+O 和 Ctrl+Alt+A 不起作用
- postgresql - 从 postgres 中的表中删除分区
- navigation - 我无法将绑定视图设置为线性布局
- python - 制作一个由多个列表组成的数据框作为行,Python
- sugarcrm - 有没有办法从命令行运行修复和重建?
- algorithm - introselect 的最差时间复杂度如何变成“O(n)”?
- django - Docker 上 Django 项目的 Webpack(生产)
- javascript - 画与画之间的差距
- matlab - 使用 GUI 在 x 轴上表示当前时间
- pandas - 多个子段上的 Cumprod