android 关于从服务器端读取数据并保存
这是一个从服务器端数据库读取数据并保存到本地数据库的程序,我已经确定服务器端的数据时存在的,而且两端的数据库字段相同,但是现在本地数据库却没有数据,谁能帮我看一下有没有错误
package com.amaker.wlo;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.DialogInte易做图ce;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import com.amaker.provider.Menus;
import com.amaker.provider.Tables;
import com.amaker.util.HttpUtil;
public class UpdateActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView listView = getListView();
listView.setBackgroundResource(R.drawable.update);
String[] items = {"更新表一", "更新表二" };
// 实例化adapter
ListAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.易做图_list_item_1, items);
// 为ListView设置adapter
listView.setAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
switch (position) {
// 更新表一
case 0:
confirm(1);
break;
// 更新表二
case 1:
confirm(2);
break;
default:
break;
}
}
// 确认对话框
private void confirm(final int item) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
.setMessage("确定要更新数据库吗?").setCancelable(false)
.setPositiveButton("确定", new DialogInte易做图ce.OnClickListener() {
public void onClick(DialogInte易做图ce dialog, int id) {
if (item == 1) {
// 更新表一数据
updateTable1();
} else {
// 更新表二数据
updateTable2();
}
}
})
.setNegativeButton("取消",
new DialogInte易做图ce.OnClickListener() {
public void onClick(DialogInte易做图ce dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
// 更新表一
private void updateTable1() {
// 访问服务器url
String urlStr = HttpUtil.BASE_URL + "servlet/UpdateServlet";
try {
// 实例化URL对象
URL url = new URL(urlStr);
// 创建并打开连接
URLConnection conn = url.openConnection();
// 获得输入流
InputStream in = conn.getInputStream();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(in);
NodeList nl = doc.getElementsByTagName("menu");
// 获得访问数据接口ContentResolver
ContentResolver cr = getContentResolver();
// 访问数据的Uri
Uri uri1 = Menus.CONTENT_URI;
// 删除本地SQLite数据库中菜谱表中的数据
cr.delete(uri1, null, null);
// 循环将数据保存到菜谱表
for (int i = 0; i < nl.getLength(); i++) {
// 实例化ContentValues
ContentValues values = new ContentValues();
// 解析XML文件获得菜单id
int id = Integer.parseInt(doc.getElementsByTagName("id").item(i).getFirstChild().getNodeValue());
// 名称
String name = doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue();
// 图片路径
String pic = doc.getElementsByTagName("pic").item(i).getFirstChild().getNodeValue();
// 价格
int pri = Integer.parseInt(doc.getElementsByTagName("price").item(i).getFirstChild().getNodeValue());
// 添加到ContenValues对象
values.put("_id", id);
values.put("name", name);
values.put("pri", pri);
values.put("pic", pic);
// 插入到数据库
cr.insert(uri1, values);
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//updateTable2()省略
}
--------------------编程问答--------------------
--------------------编程问答--------------------
没有人会吗?大侠们
--------------------编程问答--------------------
看考http://topic.csdn.net/u/20121019/09/55827e1b-b9d4-405f-8b21-c9a356d456dc.html?seed=696184375&r=79952546#r_79952546
补充:移动开发 , Android