【发布时间】:2014-06-25 01:57:11
【问题描述】:
您好,我是整个 android 和 SQLite 数据库的新手。我遇到的问题是当我尝试将分数插入数据库时,甚至没有尝试。代码在不插入的情况下继续正常运行。
我的数据库表实际上是主键 id 和分数字段,它是一个整数。
我不完全确定您需要查看哪些代码来识别我的问题,但这是我的猜测。抱歉,如果我错了,我会尽我所能提供帮助。感谢您的宝贵时间。
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();
}
}
【问题讨论】:
-
如果有任何异常,你就吞下了。在你的游戏类中打印堆栈跟踪,如果有的话,看看它说了什么,无论如何都不是一个好习惯。 (在工作=假的那一行;)
-
就是看看有没有插入就行了,我去试试printTrace看看返回什么。
-
@Jimmy printStackTrace() 返回注释。
-
看看@laalto 的回答,他有鹰眼;)