2012-02-04 17 views
0

我正在将数据从android应用程序添加到php服务器。截至目前,我基本上每次从我的android应用程序上传一行,所以它需要为表中的每一行建立一个连接。这似乎不是很有效。我该如何更改我的代码,以便一次建立一个连接并上传表中的所有数据?我的方法看起来是这样的:从android到php服务器有效地添加表?

public Boolean upLoad(){  

     //tells how many entries successfully uploaded 
     int count = 0; 

     Uri uri = ProviderMetaData.TableMetaData.CONTENT_URI; 
     HttpPost httppost = new HttpPost("http://10.0.0.5/xampp/fields.php"); 
     HttpClient httpclient = new DefaultHttpClient(); 
     String[] projection = new String[]{ProviderMetaData.TableMetaData._ID, 
       ProviderMetaData.TableMetaData.FIELD1, 
       ProviderMetaData.TableMetaData.FIELD2, 
       ProviderMetaData.TableMetaData.FIELD3, 
       } 
    Activity a = (Activity)this.mContext; 
     Cursor cur = a.managedQuery(uri,projection,null,null, 
       ProviderMetaData.TableMetaData.); 

      String field1; 
      String field2; 
      String field3; 
      Boolean success = false; 
      Boolean nofailure = true; 
      Scanner sc; 

    if (cur.moveToFirst()) //fix this. cur.moveToFirst problem 
    {  


     int field1Column = cur.getColumnIndex(ProviderMetaData.TableMetaData.FIELD1); 
     int field2Column = cur.getColumnIndex(ProviderMetaData.TableMetaData.FIELD2); 
     int field3Column = cur.getColumnIndex(ProviderMetaData.TableMetaData.FIELD3); 



     do { 
      field1 = cur.getString(field2Column); 
      field2 = cur.getString(field2Column); 
      field3 = cur.getString(field3Column); 
      try { 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 
       nameValuePairs.add(new BasicNameValuePair("field1", field1)); 
       nameValuePairs.add(new BasicNameValuePair("field2", field2)); 
       nameValuePairs.add(new BasicNameValuePair("field3", field3));    
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       HttpResponse response = httpclient.execute(httppost); 
       String responseText = EntityUtils.toString(response.getEntity()); 
       count++; 
       success = true; 


      } 
      catch (ClientProtocolException e) { 
       Log.d("uploadCursorData","could not make connection"); 
       success = false; 
       nofailure = false; 
      } 
      catch (IOException e) { 

       Log.d("uploadCursorData","Some other kind of exception" + e.toString()); 
       success = false; 
      } 
      catch (Exception e) { 
       success = false; 
       nofailure = false; 
      } 
     } while (cur.moveToNext()); 

     Log.d("upLoadCursorData", "The number of entries successfully oploaded are " + count); 


     } 

    Log.d("Success", "was this successful?: " + success); 
    return nofailure; 

    } 

在服务器端,我只是收集和处理使用$ _ POST [“字段#”]表中的每一行。我该如何上传表格中的所有内容?

+0

你有没有得到答案..... – 2012-03-23 12:23:56

+0

不,仍然上传使用循环,打破和连接到服务器。 – Stagleton 2012-03-26 06:21:01

回答

1

将您的数据转换为JSON格式,将其发布到服务器,然后解码服务器上的JSON并保存。这是做这件事最常用的方法。

+0

你知道如何在Java/Android中执行此操作吗?我只能创建一个1D JSON对象 – Stagleton 2012-02-05 11:50:03

+0

我不知道Java,但谷歌搜索显示我http://json.org/java/这似乎是一个很好的资源。 – thenetimp 2012-02-05 12:06:12

相关问题