Здравствуйте, я новичок в базе данных для Android и SQLite. Проблема, с которой я сталкиваюсь, - это когда я пытаюсь вставить счет в базу данных, даже не пытаюсь. Код продолжает работать как обычно без вставки.Android: SQLite insert, no попытка
Моя таблица базы данных Является буквально идентификатором первичного ключа и поле оценки, которое является целым числом.
Я не совсем уверен, какой код вам нужно будет видеть, чтобы определить мою проблему, но вот моя оценка. Извиняюсь, если я ошибаюсь, я постараюсь помочь в любом случае. Спасибо за ваше время.
Класс DBAdaptor.
//Primary Key for the score
public static final String KEY_ROWID = "id";
//Field for user score
public static final String KEY_SCORE = "score";
//Database name
private static final String DATABASE_NAME = "SportsQuiz";
//Database table name
private static final String DATABASE_TABLE = "score";
//Database version
private static final int DATABASE_VERSION = 1;
private dbHelper dbHelper;
private final Context context;
private SQLiteDatabase sqlDB;
private static class dbHelper extends SQLiteOpenHelper
{
//Constructor for dbHelper
public dbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_SCORE + "INTEGER NOT NULL;)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE);
onCreate(db);
}
}
public Adapter(Context c)
{
context = c;
}
public Adapter open() throws SQLException
{
dbHelper = new dbHelper(context);
sqlDB = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
dbHelper.close();
}
public long createEntry(int score) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
cv.put(KEY_SCORE, score);
return sqlDB.insert(DATABASE_TABLE, null, cv);
}
В классе игры я хочу отобразить диалоговое окно, если вставка прошла успешно. Оценка - это переменная int.
boolean working = true;
try{
Adapter entry = new Adapter(Game.this);
entry.open();
entry.createEntry(score);
entry.close();
}catch (Exception e)
{
working = false;
}
finally
{
if (working == true)
{
Dialog d = new Dialog(Game.this);
d.setTitle("Woo!");
TextView tv = new TextView(Game.this);
tv.setText("Woo");
d.setContentView(tv);
d.show();
}
}
Вы проглотили свое исключение, если оно есть. напечатайте stacktrace в своем игровом классе и посмотрите, что он говорит, если есть какие-то, а не хорошая практика. (в строке, где work = false;) – Jimmy
Это было просто посмотреть, вставлено ли это, и все, идите и попробуйте printTrace и посмотрите, что он возвращает. – Seatter
@Jimmy Отпечаток printStackTrace() возвращен. – Seatter