将表从android高效地添加到php服务器?

将表从android高效地添加到php服务器?,php,android,sql,Php,Android,Sql,我正在从android应用程序向php服务器添加数据。到目前为止,我基本上是从我的android应用程序一次上传一行,所以它需要为表中的每一行建立连接。这似乎不是很有效。如何更改代码,使其建立一个连接并同时上载表中的所有数据?我的方法如下所示: public Boolean upLoad(){ //tells how many entries successfully uploaded int count = 0; Uri uri = Pr

我正在从android应用程序向php服务器添加数据。到目前为止,我基本上是从我的android应用程序一次上传一行,所以它需要为表中的每一行建立连接。这似乎不是很有效。如何更改代码,使其建立一个连接并同时上载表中的所有数据?我的方法如下所示:

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;

   }
public Boolean upLoad(){
//说明成功上载的条目数
整数计数=0;
Uri Uri=ProviderMetaData.TableMetaData.CONTENT\u Uri;
HttpPost HttpPost=新的HttpPost(“http://10.0.0.5/xampp/fields.php"); 
HttpClient HttpClient=新的DefaultHttpClient();
字符串[]投影=新字符串[]{ProviderMetaData.TableMetaData.\u ID,
ProviderMetaData.TableMetaData.FIELD1,
ProviderMetaData.TableMetaData.FIELD2,
ProviderMetaData.TableMetaData.FIELD3,
}
活动a=(活动)this.mContext;
Cursor cur=a.managedQuery(uri、投影、null、null、,
ProviderMetaData.TableMetaData。);
字符串字段1;
字符串字段2;
字符串字段3;
布尔成功=假;
布尔值nofailure=true;
扫描仪sc;
if(cur.moveToFirst())//修复此.cur.moveToFirst问题
{       
int field1Column=cur.getColumnIndex(ProviderMetaData.TableMetaData.FIELD1);
int field2Column=cur.getColumnIndex(ProviderMetaData.TableMetaData.FIELD2);
int field3Column=cur.getColumnIndex(ProviderMetaData.TableMetaData.FIELD3);
做{
field1=当前getString(Field2列);
field2=当前getString(field2列);
field3=当前getString(field3列);
试试{
List nameValuePairs=新的ArrayList(3);
添加(新的BasicNameValuePair(“field1”,field1));
添加(新的BasicNameValuePair(“field2”,field2));
添加(新的BasicNameValuePair(“字段3”,字段3));
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpclient.execute(httppost);
字符串responseText=EntityUtils.toString(response.getEntity());
计数++;
成功=真实;
} 
捕获(客户端协议例外e){
Log.d(“uploadCursorData”,“无法建立连接”);
成功=错误;
失败=错误;
} 
捕获(IOE){
d(“uploadCursorData”,“其他类型的异常”+e.toString());
成功=错误;
}
捕获(例外e){
成功=错误;
失败=错误;
}
}while(cur.moveToNext());
Log.d(“upLoadCursorData”,“成功加载的条目数为”+计数);
}
Log.d(“成功”,“这成功了吗?:”+成功);
返回故障;
}

在服务器端,我只是使用$_POST['field#']收集并处理表中的每一行。如何一次上载表中的所有内容?

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

您知道如何在Java/Android中实现这一点吗?我只能创建一个1D JSON对象,我不懂Java,但google search向我展示了这似乎是一个很好的资源。不,仍然使用一个中断并连接到服务器的循环进行上传。