Давайте разберем эту проблему на пару постов.Сначала мы можем разобраться с частью SQLite
кода, затем вы можете опубликовать новый вопрос о вставке значений - достаточно много кода, чтобы охватить и сделать это понятным.
Измените свой код в своем DataBase
класс (Кстати: ненадлежащее имя!)
Дайте именам переменных для столбцов понятное имя.Кто может вспомнить, что такое COL_6
?Также учтите, что это, вероятно, не обязательно должно быть public
.
public static final String COL_ID = "ID";
public static final String COL_NAME = "NAME";
public static final String COL_AGE = "AGE";
public static final String COL_GENDER = "GENDER";
public static final String COL_WEIGHT = "WEIGHT";
public static final String COL_HEIGHT = "HEIGHT";
public static final String COL_TRAUMA = "TRAUMA";
Возможно, вы не захотите проверять, существует ли таблица, но я все равно добавил проверку.Я также сделал ID
столбец AUTOINCREMENT
.
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +
COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_NAME + " TEXT," +
COL_AGE + " INTEGER NOT NULL DEFAULT 0, " +
COL_GENDER + " INTEGER NOT NULL DEFAULT 0, " +
COL_TRAUMA + " INTEGER NOT NULL DEFAULT 0, " +
COL_WEIGHT + " INTEGER NOT NULL DEFAULT 0, " +
COL_HEIGHT + " INTEGER NOT NULL DEFAULT 0);");
}
Измените метод insertData
, чтобы учесть изменения статических конечных переменных для столбцов и изменения типов параметров:
public boolean insertData(String name, Integer age, Integer sex_male, Integer weight, Integer height, Integer trauma){
boolean success = false;
try{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_NAME, name);
contentValues.put(COL_AGE, age);
contentValues.put(COL_GENDER, sex_male);
contentValues.put(COL_WEIGHT, weight);
contentValues.put(COL_HEIGHT, height);
contentValues.put(COL_TRAUMA, trauma);
long result = db.insert(TABLE_NAME,null,contentValues);
db.close();
if(result != -1) success = true;
}
catch(Exception ex){
Log.e(TAG, ex.getMessage());
}
return success;
}
Также обратите внимание, нет необходимости получать Writeable
базу данных в вашем getALLData()
методе:
public Cursor getALLData(){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("Select * from "+ TABLE_NAME, null);
return res;
}
Теперь опубликуйте новый вопрос о том, как заполнить базу данных из вашегоActivity
и мы можем идти оттуда ...