我想将json字符串转换为日期并保存到SQLite表中。但是得到`的异常,原因是:android.database.sqlite.SQLiteException:接近"2016":语法错误(代码1):,编译时:更新。我的应用程序在一段时间后崩溃
这是我的代码
for (int j = 0; j < jarr_ActivityObjectList.length(); j++)
{
JSONObject jobjVessels = jarr_ActivityObjectList.getJSONObject(j);
strActivitObj_ActiveStatus = jobjVessels.getString("ActiveStatus");
strImageCreatedDate = jobjVessels.getString("CreateDate");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a", Locale.getDefault());
Date date = new Date(strImageCreatedDate);
String newImageCreatedDate = dateFormat.format(date);
str_imgList_activityId = jobjVessels.getString("activityId");
str_imgList_activityObjId = jobjVessels.getString("activityObjId");
int activityObjId = 0;
try
{
activityObjId = Integer.parseInt(str_imgList_activityObjId);
} catch(NumberFormatException nfe) {
System.out.println("Could not parse " + nfe);
}
str_imgList_objectId = jobjVessels.getString("objectId");
str_imgList_userId = jobjVessels.getString("userId");
String strImageDownLoadStatus = "0";
String strUpLoadStatus = "1";
str_imgList_imageaudioPath = jobjVessels.getString("imageaudioPath");
if (strActivitObj_ActiveStatus.equals("1"))
{
if (dbhelper.isActivityObject_ImageAudioPath(str_imgList_imageaudioPath))
{
//dbhelper.update_ActivityObjectList(strActivitObj_ActiveStatus, newImage_DateString , str_imgList_activityId, activityObjId, str_imgList_imageaudioPath, str_imgList_objectId, str_imgList_userId, strImageDownLoadStatus , strUpLoadStatus);
db = dbhelper.getWritableDatabase();
db.execSQL("update ActivityObjectList set ActiveStatus = '" + strActivitObj_ActiveStatus + " , CreatedDate='" + newImageCreatedDate + "' , activityId='" + str_imgList_activityId + "' , activityObjId= '" + activityObjId + "', objectId= '" + str_imgList_objectId + "', userId= '" + str_imgList_userId + "', DownLoad_Status='" + strImageDownLoadStatus + "', UpLoadStatus='" + strUpLoadStatus + "' where imageaudioPath = '" + str_imgList_imageaudioPath + "'");
}
else
{
dbhelper.insert_ActivityObjectList(strActivitObj_ActiveStatus, newImageCreatedDate , str_imgList_activityId, activityObjId, str_imgList_imageaudioPath, str_imgList_objectId, str_imgList_userId, strImageDownLoadStatus , strUpLoadStatus);
}
}
if (strActivitObj_ActiveStatus.equals("0"))
{
if (dbhelper.isActivityObject_ImageAudioPath(str_imgList_imageaudioPath))
{
db = dbhelper.getWritableDatabase();
db.execSQL("DELETE FROM ActivityObjectList where imageaudioPath = '" + str_imgList_imageaudioPath + "'");
Log.e(""," Deleted SuccesFully !!! imageaudioPath " + str_imgList_imageaudioPath);
}
}
}
这是我的dbhelper代码
String strTable_ActivityObjectList = "CREATE TABLE IF NOT EXISTS " + Table_ActivityObjectList + " ("
+ COL_activityobjlistID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_activeStatus + " TEXT, "
+ COL_CreatedDate + " TEXT, "
+ COL_activityId + " TEXT, "
+ COL_activityObjId + " INTEGER, "
+ COL_imageaudioPath + " TEXT, "
+ COL_objectId + " TEXT, "
+ COL_userId + " TEXT, "
+ COL_ActivityObject_DownLoadStatus + " TEXT, "
+ COL_ActivityObject_UpLoadStatus + " TEXT" + ");";
public boolean update_ActivityObjectList(String strActiveStatus,
String CreatedDate ,
String activityId,
int stractivityObjId,
String strimageaudioPath,
String strobjectId,
String struserId,
String strDownLoadStatus ,
String strUpLoadStatus)
{
SQLiteDatabase db = getReadableDatabase();
ContentValues values = new ContentValues();
values.put(COL_activeStatus, strActiveStatus);
values.put(COL_CreatedDate , CreatedDate);
values.put(COL_activityId, activityId);
values.put(COL_activityObjId, stractivityObjId);
values.put(COL_imageaudioPath, strimageaudioPath);
values.put(COL_objectId, strobjectId);
values.put(COL_userId, struserId);
values.put(COL_ActivityObject_DownLoadStatus, strDownLoadStatus);
values.put(COL_ActivityObject_UpLoadStatus ,strUpLoadStatus );
int i = db.update(Table_ActivityObjectList, values, COL_imageaudioPath + "=" + strimageaudioPath, null);
return i > 0;
}
即使调用update_ActivityObjectList这个上面的更新方法来更新崩溃后的数据。有人能帮我解决这个问题吗?
在添加"空格"
" 2016 "
在你的方法中?
您应该使用SQLiteDatabase db = getWritableDatabase();
而不是SQLiteDatabase db = getReadableDatabase();
在数据库中插入值