2014-02-18 3 views
0

Я пытаюсь добавить простой счетчик int, который настроен на count ++ каждый раз, когда игрок выигрывает, он будет увеличиваться на 1. Я пытаюсь добавить этот счет int внутри моей базы данных SQLite. Но у меня нет идеи, как я могу это сделать, база данных находится в одном классе, а значение int в другом классе. Как я могу добавить int внутри базы данных. Я создал метод addScores в моем классе:Добавление данных в базу данных SQLite из другого класса в android

базы данных Код:

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 
} 
} 

Someother Класс:

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

     } 

Как добавить счетчик ИНТ в моей базе данных? Я пытаюсь добавить его в столбец number_of_wins?

ответ

0

Вам нужно вставить значение в базу данных, используя что-то вроде этого.

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

Создать метод в классе базы данных и добавить/изменить этот код, и, наконец, назвать этот новый метод из класса «SomeOther».

+0

Что такое идентификатор ?, мне нужно создать новый метод в классе базы данных ?, и как я могу ссылаться на «счетчик», потому что он говорит, что он не может быть разрешен? – user3322960

+0

id - это rowid из недавно вставленной записи. 'counter' - количество побед, просто замените его на вашу переменную. – Merlevede

+0

Разве я помещаю это в мой класс другого класса или базы данных? – user3322960

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();  
    } 
} 
+0

какой класс я ставлю этот метод? – user3322960

+0

Этот метод должен быть помещен в ваш вспомогательный класс db. – Robert

+0

Также помните, когда вы вызываете 'getWritableDatabase()' вызывается 'onUpgrade()' и ваш 'db.execSQL (« DROP TABLE IF EXISTS »+ DATABASE_TABLE); onCreate (db); 'может быть опасным, если вы хотите сохранить любые данные. – Robert

-1

Я предполагаю, что у вас есть уникальный идентификатор для конкретного счета, который вы хотели бы увеличить. В этом случае я бы написал следующий метод внутри класса 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)); 
} 
Смежные вопросы