Я новичок в программировании на Android и не могу понять, почему получение целочисленных значений из базы данных SQLite всегда возвращает -1.
Мое приложение состоит из основного действия, которое я создаю, если база данных еще не существует, и заполняет первую строку всеми нулями таким образом
DatabaseHelper databaseHelper = new DatabaseHelper(this);
Cursor data = databaseHelper.getInformation();
if(!data.moveToFisrt()) {
databaseHelper.addInformation(0, 0, 0);
}
Теперь я начинаю второе действие, которое реализует пользовательское представление. В этом упражнении я реализую настраиваемое представление, а внутри настраиваемого представления обновляю строку, ранее созданную в основном упражнении, затем вызываю метод adInformation следующим образом
SecondActivity
private CustomView cv;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
cv= new CustomView(this);
setContentView(R.layout.activity_game);
}
CustomView
//all the constructors call init()
private void init(Context context){
/***/
databaseHelper = new DatabaseHelper(getContext());
int w, l, d;
Cursor data = databaseHelper.getInformation();
w = data.getColumnIndex(String.valueOf(1));
l = data.getColumnIndex(String.valueOf(2));
d = data.getColumnIndex(String.valueOf(3));
//here w,l,d are -1
}
Это мой помощник по базе данных
public class DatabaseHelper extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+TABLE_NAME1+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, W INT, D INT, L INT)");
//i have a second table
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME1);
onCreate(db);
}
public boolean addInformation(int w, int l, int d){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
if(w != -1) {
values.put("W", w);
}
if(d != -1)
values.put("D", d);
if(l != -1)
values.put("L", l);
long id = db.insert(TABLE_NAME1, null, values);
db.close();
if(id == -1)
return false;
else
return true;
}
public Cursor getInformation(){
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT * FROM " + TABLE_NAME1;
Cursor c = db.rawQuery(query,null);
return c;
}
}
Я также отмечаю, что моя база данных содержит вторую таблицу. Эта вторая вкладка заполняется в пользовательском представлении, а затем отображается, когда я возвращаюсь к основному виду деятельности.
Записи, вставленные в пользовательское представление, правильно отображаются в основном действии.
Более того, если в пользовательском представлении мне нужно было сначала вызвать getInformation, затем addInformation (5,5,5) и после getInformation () он вернет -1