У меня есть таблица с именем TABLE_MSG
. Я не могу вставить в нее записи.Функция insert
возвращает значение -1
.Я добавил несколько log
в функцию insert
и показал, что моя модель правильно передана функции insert
, а ContentValues
имеет значение и не равно нулю. Кажется, все правильно, но insert
не работает.Вот моя модель.
public class message_model implements Serializable {
@SerializedName("id")
private int id;
@SerializedName("thread_id")
private int thread_id;
@SerializedName("user_id")
private int user_id;
@SerializedName("body")
private String body;
@SerializedName("created_at")
private String created_at;
@SerializedName("updated_at")
private String updated_at;
@SerializedName("deleted_at")
private String deleted_at;
// also I write getter and setter
}
Это запрос создания таблицы.
String CREATE_TABLE_MSG = "CREATE TABLE " + TABLE_MSG + " ("
+ MSG_ID + " INTEGER PRIMARY KEY," + MSG_T_ID + " INTEGER," + MSG_U_ID + " INTEGER,"
+ MSG_BODY + " TEXT," + MSG_C_AT + " TEXT," + MSG_U_AT + " TEXT," + MSG_D_AT + " TEXT)";
db.execSQL(CREATE_TABLE_MSG);
Это add_message
функция.
public void add_message(message_model model) {
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(MSG_ID,model.getId());
values.put(MSG_T_ID, model.getThread_id());
values.put(MSG_U_ID, model.getUser_id());
values.put(MSG_BODY, model.getBody());
values.put(MSG_C_AT, model.getCreated_at());
values.put(MSG_U_AT, model.getUpdated_at());
values.put(MSG_D_AT, model.getDeleted_at());
Log.e("MESSAGE",values.toString()+" toString value \n");
Log.e("MESSAGE",model.toString());
long rowInserted= db.insert(TABLE_MSG, null, values);
if(rowInserted != -1)
Log.e("MESSAGE","IN INSERT MESSAGE TABLE and log is -1");
else
Log.e("MESSAGE","IN INSERT MESSAGE TABLE "+rowInserted);
db.close();
}
catch (Exception e){
Log.e("MESSAGE",e.toString());
}
}
Это мой вызовadd_message
функция.
message_model m=new message_model(589, 300, 400, "body", "createdat", "updatedat", null);
db.add_message(m);
Это get_message
функция.
public ArrayList<message_model> get_messages() {
ArrayList<message_model> list = new ArrayList<message_model>();
String selectQuery = "SELECT * FROM " + TABLE_MSG;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
message_model model = new message_model();
model.setId(cursor.getInt(0));
model.setThread_id(cursor.getInt(1));
model.setUser_id(cursor.getInt(2));
model.setBody(cursor.getString(3));
model.setCreated_at(cursor.getString(4));
model.setUpdated_at(cursor.getString(5));
model.setDeleted_at(cursor.getString(6));
}
while (cursor.moveToNext());
}
cursor.close();
db.close();
Log.e("MESSAGE","in get message");
Log.e("MESSAGE","in get message"+list.toString());
return list;
}
Это мой призыв get_message
.
ArrayList<message_model> listm = new ArrayList<>();
listm = db.get_messages();
for (int i = 0; i < listm.size(); i++) {
Log.e("MESSAGE", "body in for " + listm.get(i).getBody());
Log.e("MESSAGE", "id in for " + listm.get(i).getId() + "");
}