从android中的另一个类向SQLite数据库添加数据

时间:2014-02-18 18:50:37

标签: java android sql sqlite

我正在尝试添加一个简单的int计数,每当玩家获胜时,它将设置为count ++,它将增加1.我试图在我的SQLite数据库中添加这个int计数。但我不知道我怎么能这样做,数据库在一个类中,我的int值在另一个类中,如何在数据库中添加int。我在我的类中创建了一个addScores方法:

数据库代码:

public class Database {

public static final String KEY_ROWID = "_id"; 
public static final String KEY_NAME = "number_of_wins"; 

private static final String DATABASE_NAME = "HIGHSCORES"; 
private static final String DATABASE_TABLE= "Total_Wins"; 
private static final int DATABASE_VERSION = 2;

private DBHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;

  private static class DBHelper extends SQLiteOpenHelper {

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
         db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                    KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    KEY_NAME + " INTEGER);"
                    );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}
public Database(Context context) {
    ourContext = context;
}

public Database open() {
    ourHelper = new DBHelper(ourContext);
    ourDatabase = ourHelper.getWritableDatabase();
    return this;
}

public void close() {
    ourHelper.close();
}

public Cursor getScores() {
    return ourDatabase.rawQuery("SELECT * FROM "+DATABASE_TABLE, null); //No Parameter
}
}

另一类:

int count =0;
count++;
//Adding HighScore to Database
        public void addScore() {

        }

如何在数据库中添加int计数?我想在列number_of_wins中添加它?

3 个答案:

答案 0 :(得分:0)

您需要使用类似的内容在数据库中插入值。

ContentValues values = new ContentValues();
values.put("number_of_wins", counter);
id = ourDatabase.insertOrThrow("Total_Wins", null, values);

在数据库类中创建一个方法并添加/修改此代码,最后从'SomeOther'类调用这个新方法。

答案 1 :(得分:0)

这是一个简单的DBHelper应该适合你,让你开始,创建一个这样的实例,你应该能够在你的数据库中添加一个分数,但是我强烈建议你在评论中阅读教程,并且真正的数字它是如何工作的。因此,您应该可以完成所有其他CRUD操作。

public class DBHelper extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 2;
    private static final String DATABASE_NAME= "HIGHSCORES";
    private static final String DATABASE_TABLE = "TotalWins";

    // The keys
    private static final String KEY_ID = "id";
    private static final String KEY_SCORE = "NumberOfWins";

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_ID + " INTEGER PRIMARY KEY, " +
                KEY_SCORE + " INTEGER);"
                );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Careful with this!
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

    public void addScore(int score) {
        // Get a writable database handle
        SQLiteDatabase db = getWritableDatabase();

        // Put the coun into a ContentValues object, with correct key
        ContentValues values = new ContentValues();    
        values.put(KEY_SCORE, score);

        // Inserting Row
        db.insert(DATABASE_TABLE, null, values);

        // Closing database connection
        db.close();     
    }
}

答案 2 :(得分:-1)

我假设你有一个你想要增加的特定计数的唯一ID。在这种情况下,我会在Database类中编写以下方法,并在计数增加时调用它。

public void addScore(long id) {
    ourDatabase.execSQL(String.format("UPDATE %s SET %s=%s+1 WHERE %s=%d",
        DATABASE_TABLE, KEY_NAME, KEY_NAME, KEY_ID, id));
}