0
我做,我連接到一個網站的應用程序從我的Web數據庫的JSON字符串下載一個表格,我都做了,我的應用程序轉移表我的數據庫顯示,作爲webArray。我創建了一個數據庫輔助類來在應用程序內部創建和編輯我的數據庫,我的問題是我無法將數據從我的webArray傳輸到我的數據庫,下面是一些代碼,或許可以幫助我指出正確的方向。如何從網絡中的Android
mainActivity:
//this is our download file asynctask
class DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS2);
}
@Override
protected String doInBackground(String... aurl) {
try {
String result = "";
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://mywebsite");
// httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream webs = entity.getContent();
// convert response to string
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(webs, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
webs.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
return "ERROR_IN_CODE";
}
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
return "ERROR_IN_CODE";
}
// parse json data
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
webResultCuestionario resultRow3 = new webResultCuestionario();
resultRow3._id = json_data.getString("id");
resultRow3.pregunta = json_data.getString("Question");
resultRow3.respuesta = json_data.getString("Answer");
CuestionarioArray.add(resultRow3);
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
return "ERROR_IN_CODE";
}
} catch (Exception e) {
// this is the line of code that sends a real error message to the
// log
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
// this is the line that prints out the location in
// the code where the error occurred.
e.printStackTrace();
return "ERROR_IN_CODE";
}
return null;
}
protected void onProgressUpdate(String... progress) {
Log.d(LOG_TAG,progress[0]);
mProgressDialog2.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String unused) {
//dismiss the dialog after the file was downloaded
dismissDialog(DIALOG_DOWNLOAD_PROGRESS2);
if(unused != null && unused.equals("ERROR_IN_CODE")){
errornote2();
}else{
tvCuestionario.setText("Cuestionario encontrado");
addCuestionarioToDb();
}
}
}
public void addCuestionarioToDb(){
for (webResultCuestionario currentItem: CuestionarioArray){
int cis = Integer.parseInt(currentItem._id);
db.insertCuestionario(CuestionarioArray.get(cis).pregunta, CuestionarioArray.get(cis).respuesta);
}
}
我CuestionarioHelper類
:
public class CuestionarioHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="cuestionario.db";
private static final int SCHEMA_VERSION=1;
public CuestionarioHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE Cuestionario (_id INTEGER PRIMARY KEY AUTOINCREMENT, pregunta TEXT, respuesta TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void insertCuestionario(String pregunta, String respuesta) {
ContentValues cv=new ContentValues();
cv.put("pregunta", pregunta);
cv.put("respuesta", respuesta);
getWritableDatabase().insert("Cuestionario", null, cv);
}
日誌
09-23 16:23:02.977: E/AndroidRuntime(6496): FATAL EXCEPTION: main
09-23 16:23:02.977: E/AndroidRuntime(6496): java.lang.IndexOutOfBoundsException: Invalid index 100, size is 100
09-23 16:23:02.977: E/AndroidRuntime(6496): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
09-23 16:23:02.977: E/AndroidRuntime(6496): at java.util.ArrayList.get(ArrayList.java:304)
09-23 16:23:02.977: E/AndroidRuntime(6496): at VerCuestionarioEspanol_copy.MainActivity.addCuestionarioToDb(MainActivity.java:580)
09-23 16:23:02.977: E/AndroidRuntime(6496): at VerCuestionarioEspanol_copy.MainActivity$DownloadFile3Async.onPostExecute(MainActivity.java:46 2)
09-23 16:23:02.977: E/AndroidRuntime(6496): at VerCuestionarioEspanol_copy.MainActivity$DownloadFile3Async.onPostExecute(MainActivity.java:1)
09-23 16:23:02.977: E/AndroidRuntime(6496): at android.os.AsyncTask.finish(AsyncTask.java:602)
09-23 16:23:02.977: E/AndroidRuntime(6496): at android.os.AsyncTask.access$600(AsyncTask.java:156)
09-23 16:23:02.977: E/AndroidRuntime(6496): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
09-23 16:23:02.977: E/AndroidRuntime(6496): at android.os.Handler.dispatchMessage(Handler.java:99)
09-23 16:23:02.977: E/AndroidRuntime(6496): at android.os.Looper.loop(Looper.java:154)
09-23 16:23:02.977: E/AndroidRuntime(6496): at android.app.ActivityThread.main(ActivityThread.java:4977)
09-23 16:23:02.977: E/AndroidRuntime(6496): at java.lang.reflect.Method.invokeNative(Native Method)
09-23 16:23:02.977: E/AndroidRuntime(6496): at java.lang.reflect.Method.invoke(Method.java:511)
09-23 16:23:02.977: E/AndroidRuntime(6496): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-23 16:23:02.977: E/AndroidRuntime(6496): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-23 16:23:02.977: E/AndroidRuntime(6496): at dalvik.system.NativeStart.main(Native Method)
究竟是什麼問題? – dor506
@ dor506,以及沒有添加項目。也許會有不同的方式來添加它們? – zvzej
奇怪。你沒有得到任何異常?檢查日誌 – dor506