#android #sqlite
#Android #sqlite
Вопрос:
Я пытаюсь вставить некоторые данные в мою недавно созданную базу данных Android SQLite с помощью этого фрагмента кода, но он не работает.
Вот ошибка :
10-19 19:05:39.793: INFO/Database(413): sqlite returned: error code = 1, msg = near ",": syntax error
Я знаю, что код нужно очистить, но я сделаю это позже … ^^
Вот код :
SQLiteDatabase db = this.sqlHelper.getWritableDatabase();
ContentValues dv = new ContentValues();
dv.put("`createdTime`", h.createdTime);
dv.put("`type`", h.type);
dv.put("`what`", h.what);
dv.put("`where`", h.where);
dv.put("`readableWhat`", h.readableWhat);
dv.put("`readableWhere`", h.readableWhere);
dv.put("`accuracy`", h.accuracy);
dv.put("`isMnemo`", h.isMnemo);
dv.put("`isPlaceCode`", h.isPlaceCode);
dv.put("`isCoords`", h.isCoords);
dv.put("`isNear`", h.isNear);
dv.put("`isEverywhere`", h.isEverywhere);
Cursor c = db.query("HISTORY",
new String[]{
"`type`",
"`what`",
"`where`",
"`readableWhat`",
"`readableWhere`",
"`accuracy`",
"`isMnemo`",
"`isPlaceCode`",
"`isCoords`",
"`isNear`",
"`isEverywhere`",
},
"`type`='" h.type "'" ","
"`what`='" h.what "'" ","
"`where`='" h.where "'" ","
"`readableWhat`='" h.readableWhat "'" ","
"`readableWhere`='" h.readableWhere "'" ","
"`accuracy`='" h.accuracy "'" ","
"`isMnemo`='" h.isMnemo "'" ","
"`isPlaceCode`='" h.isPlaceCode "'" ","
"`isCoords`='" h.isCoords "'" ","
"`isNear`='" h.isNear "'" ","
"`isEverywhere`='" h.isEverywhere "'"
,
null, null, null, null);
if (!c.moveToFirst())
{
PJUtils.log("INSERT " h.readableWhat " - " h.readableWhere);
db.insertOrThrow("HISTORY", "", dv);
}
else
{
PJUtils.log("UPDATE " h.readableWhat " - " h.readableWhere);
db.update("CONFIG",
dv,
"`type`='" h.type "'" ","
"`what`='" h.what "'" ","
"`where`='" h.where "'" ","
"`readableWhat`='" h.readableWhat "'" ","
"`readableWhere`='" h.readableWhere "'" ","
"`accuracy`='" h.accuracy "'" ","
"`isMnemo`='" h.isMnemo "'" ","
"`isPlaceCode`='" h.isPlaceCode "'" ","
"`isCoords`='" h.isCoords "'" ","
"`isNear`='" h.isNear "'" ","
"`isEverywhere`='" h.isEverywhere "'"
,
null);
}
c.close();
Комментарии:
1. Почему вы вставляете апострофы в свои строки; я имею в виду «‘type’ =» вместо «type =»?
2. Как сделать это другим способом? Я имею в виду ваш путь
type=?
. Вы говорите оselectionArgs
параметре?
Ответ №1:
Вместо
","
использование
" and "
Ответ №2:
Попробуйте это для вашего запроса:
String[] columns = new String[]{
"type",
"what",
"where",
"readableWhat",
"readableWhere",
"accuracy",
"isMnemo",
"isPlaceCode",
"isCoords",
"isNear",
"isEverywhere" };
String selection = "type=? AND what=? AND where=? AND readableWhat=? AND readableWhere=? AND accuracy=? AND isMnemo=? AND isPlaceCode=? AND isCoords=? AND isNear=? AND isEverywhere=?";
String[] selectionArgs = new String[]{
h.type,
h.what,
h.where,
h.readableWhat,
h.readableWhere,
h.accuracy,
h.isMnemo,
h.isPlaceCode,
h.isCoords,
h.isNear,
h.isEverywhere
};
Cursor c = db.query("HISTORY", columns, selection, selectionArgs, null, null, null);