将表从android高效地添加到php服务器?
我正在从android应用程序向php服务器添加数据。到目前为止,我基本上是从我的android应用程序一次上传一行,所以它需要为表中的每一行建立连接。这似乎不是很有效。如何更改代码,使其建立一个连接并同时上载表中的所有数据?我的方法如下所示:将表从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
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向我展示了这似乎是一个很好的资源。不,仍然使用一个中断并连接到服务器的循环进行上传。