2013-08-08 3 views
-1

У меня есть эта функция, которая должна обновлять баланс в моей базе данных SQLite. Параметры - это баланс баланса. У меня есть класс баланса, который, я думаю, используется, чтобы помочь, но я не знаком с этим. Я привык к этому, говоря что-то вроде updateBalance (int id, String amount). Может кто-то просто объяснить мне, что здесь происходит? Новое в мире SQLite.Что означает «баланс баланса» части функции getBalance (баланс баланса)?

Моя функция updateBalance:

//Updating single Balance 
public int updateBalance(Balance balance){ 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_AMOUNT, balance.getAmount()); 

    // updating row 
    return db.update(TABLE_BALANCE, values, KEY_ID + " = ?", 
      new String[] { String.valueOf(balance.getID()) }); 
} 

Мой класс баланс:

package com.example.budge_it2; 

public class Balance { 

    //private variables 
    int _id; 
    String _amount; 

    //Empty constructor 
    public Balance(){ 

    } 
    //Constructor 
    public Balance(int id, String amount){ 
     this._id = id; 
     this._amount = amount; 
    } 

    public Balance(int id){ 
     this._id = id; 
    } 
    //getting ID 
    public int getID(){ 
     return this._id; 
    } 

    //Setting id 
    public void setID(int id){ 
     this._id = id; 
    } 

    //getting amount 
    public String getAmount(){ 
     return this._amount; 
    } 
    //setting amount 
    public void setAmount(String amount){ 
     this._amount = amount; 
    } 
} 
+3

Я бы очень хотел предложить книгу хорошего новичка на Java. Вы, по-видимому, не понимаете, что такое объект. –

+0

Вот почему я стараюсь избегать использования имен переменных, которые совпадают с классом, к которому он принадлежит. Читает иногда смешно. – Phix

+0

Почему вы держите цифры в строках - должно быть int или BigDecimal – Mark

ответ

1

Balance является объектом домена здесь. Вместо передачи связанных примитивов вокруг (ID и amount здесь); они были инкапсулированы в объект Balance. Вот как данные передаются через разные уровни приложения, например, из базы данных.

Одним из преимуществ, которые вы получаете от него, является то, что ваш интерфейс класса (сигнатуры методов) не изменяется, если позже по линии вы решите добавить или удалить данные, заменяемые. Например, если вы чувствуете необходимость передать другое значение Balance (скажем, overdraft_limit), вам нужно только изменить класс Balance. Все остальные классы, обменивающие Balance объектов, изолированы от этого изменения.

EDIT:
Ваш метод возвращает Balance объект

public Balance getBalance(int id) { /* code */ } 

Таким образом, в строке при попытке напечатать возвращаемое значение

// You're actually printing Balance obj here 
Log.d("Getting : ", "testing " + db.getBalance(1)); 

Но Balance является не примитивный, поэтому Log.d() не знает, как напечатать его amount и/или ID. Таким образом, каждый раз, когда мы определяем собственный собственный пользовательский метод, мы обычно реализуем метод toString(), чтобы иметь возможность получить текстовое представление его объекта.

Итак, добавьте следующую строку в ваш Balance класса

@Override 
public String toString() { 
    return "Balance [ID=" + _id + ", Amount=" + _amount + "]"; 
} 

Теперь, когда вы пытаетесь напечатать Balance объект, вы увидите его _id и _amount отображается.

+0

Спасибо, что помогло разобраться. Я просто новичок в использовании функций таким образом.Но что же касается SQLite и курсоров, можете ли вы объяснить мне, что делает эта функция getBalance? public Balance getBalance (int id) { \t SQLiteDatabase db = this.getReadableDatabase(); \t \t \t Курсор Курсор = db.query (TABLE_BALANCE, новый String [] {KEY_ID, KEY_AMOUNT}, KEY_ID + "=?", Новая строка [] {String.valueOf (ID)}, NULL, NULL, NULL, ноль); \t \t if (cursor! = Null) \t \t \t cursor.moveToFirst(); \t \t \t \t Баланс баланса = новый баланс (Integer.parseInt (cursor.getString (0)), cursor.getString (1)); \t \t Баланс возвратов; \t} – JonFavale

+0

@JonFavale, Можете ли вы обновить этот код метода в своем вопросе? Подсветка синтаксиса поможет понять. –

+0

ok да, дайте мне минуту, извините – JonFavale

0

Так же, как в «Int ид» или «Струнный количество», то первое слово тип и второе слово имя параметра для экземпляра этого типа.

Смежные вопросы