我使用asyntask在数据库中输入值。在背景方法中,我正在调用这种方法。
private void callLogin() {
GetDataFromApi getDataFromApi = new GetDataFromApi(url);
if (!isTableFalse) {
Log.e("MAI A GAAYA SYNCRONISE DATA BASE MAI", "HA MAI AYA");
String message =
getDataFromApi.postSignIn().toString().trim();
syncroniseDatabase(message);
populateChurchListOnValidating
.populateChurchList(parseJsonToArrayList());
} else {
try {
loginValue =
Integer.parseInt(getDataFromApi.postSignIn());
Log.e("Login VAlue", "" + loginValue);
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
}
}
和我的syncroniseDatabase(消息)就像这样
private void syncroniseDatabase(String mesString) {
Log.e(" URL in SYNCRONISATION","" + url);
try {
InsertTable insertTable = new InsertTable();
JSONObject jsonObject = new JSONObject(mesString);
insertTable.addRowforMemberTable(jsonObject.getString(
RegistrationAppConstant.MEMBER_ID),
jsonObject.getString(RegistrationAppConstant.CLIENT_ID),
jsonObject.getString(RegistrationAppConstant.FIRSTNAME),
jsonObject.getString(RegistrationAppConstant.SURNAME),
jsonObject.getString(RegistrationAppConstant.EMAIL_ID),
jsonObject.getString(RegistrationAppConstant.PASSWORD));
Log.e("Inserting Data DONE", "" + "Done");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
和我的类forInsertTable就像这样
public class InsertTable {
public void addRowforMemberTable(String memberID,
String clientID, String
firstName,String surName, String emailIDString, String passWordString)
{
Log.e("NAME", "" + memberID + " " + clientID + " " + firstName + " "
+ surName + " " + emailIDString + " " +
passWordString);
ContentValues contentValue = new ContentValues();
contentValue.put(AppConstant.MCM_MEMBER_MEMEBER_ID, memberID);
contentValue.put(AppConstant.MCM_MEMBER_CLIENT_ID, clientID);
contentValue.put(AppConstant.MCM_MEMBER_FIRST_NAME, firstName);
contentValue.put(AppConstant.MCM_MEMBER_LAST_NAME, surName);
contentValue.put(AppConstant.MCM_MEMBER_EMAIL_ID, emailIDString);
contentValue.put(AppConstant.MCM_MEMBER_PASSWORD, passWordString);
Log.e("Cotent value", "" + contentValue);
try {
SplashActivity.databaseHelper.insertInToTable(
SplashActivity.databaseHelper.getWritableDatabase(),
AppConstant.MEMBER_TABLE_NAME,
contentValue);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
这是我的json String
[{"成员Id":77,"客户端Id":37,"姓":"约翰""姓& #34;:"榕树""地址1":空,"地址2":空,"街道":空,"镇":无效,"市":无效,"县":无效,"国":无效,"国家":空"邮编":空,"移动":空," HomeTelephone":空," WorkTelephone":空," EMAILID& #34;:" jbunian@yahoo.com"," ConfirmEmailId":空,"密码":" 123""年龄":空,"性别":空,"职业":空," MartialStatus":空,"国籍":空"儿童":空," ChurchMembershipId":空," SecurityQuestion":空," SecurityAnswer":空," IsApproved& #34;:空," IsLockedOut":空," CREATEDATE":空," LastLoginDate":空," LastPasswordChangedDate":空, " LastLogOutDate":空," FailedPasswordAttemptDate":空," FailedPasswordAttemptWindowSt艺术":空," FailedPasswordAnswerAttemptCount":空," FailedPasswordAnswerAttemptWindowStart":空,"注释":空,"主动":空" IsAuthToApproveNewMember":空," Record_Created":空," Record_Updated":空," LastUpdated_LoginUserID":空," LastUpdated_WindowsUser& #34;:空," ClientAdminEmailId":空," EmailListForApproval":空," AppRegistrationStatus":空," MemberEmailMessage":空, " AdminEmailMessage":空," PhysicalDeviceId":空," DeviceOS":空," DeviceIdFromGCMorAPNS":空,"设备类型&# 34;:空}]
但是我的代码不会在这一行之后执行,因此我无法插入值。我已经加粗了日志,之后它没有执行。请告诉它为什么不执行?
答案 0 :(得分:0)
问题是你试图从JSONObject获取值,但实际上它是JSON数组。 (json字符串以 [。
开头尝试做这样的事情:
JSONArray jsonArray = new JSONArray(mesString);
JSONObject jsonObject = jsonArray.get(0);
insertTable.addRowforMemberTable(jsonObject.getString(RegistrationAppConstant.MEMBER_ID),
jsonObject.getString(RegistrationAppConstant.CLIENT_ID),
.....
.....