`

android 增删查完整例子

阅读更多

       这个Android增删查的例子本来不打算写的,不过觉得这个热门的技术,不写一下,就跟不上潮流,另外也是太多人写了几乎雷同,似乎也没什么好些的,不过看到网上比较难找到完整的前后台进行通讯交互的例子,就写一下;

      本例子涉及的面不算广,不过涉及的知识对于初学者来说也不少,具体涉及到java,servlet,mysl数据库连接,sql语句,json等,对于初学者来说,应该是不错的入门案例,如果有时间的人,可以对这个进行重构,扩展酷

   现在先来看一下一个简单的网站架构图:

 

 

这里实现的是android部分

  首先,表结构:

    

CREATE TABLE  androiduser` (
  `name` varchar(45) NOT NULL default '',
  `age` int(10) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 主要的android类:

 

   

package minn.minnapp;


/**
 * 
 * @author minn
 * @@@ 394286006
 * @email freemanfreelift@gmail.com
 * 
 */
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
public class MainActivity extends Activity {

	private View user = null;
	private UserService userService = null;
	private final static String HTTP_STR = "http://192.168.3.100:8080/minnAndroidServer/userServlet";

	@TargetApi(Build.VERSION_CODES.GINGERBREAD)
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
				.detectDiskReads().detectDiskWrites().detectNetwork()
				.penaltyLog().build());
		StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
				.detectLeakedSqlLiteObjects().detectLeakedClosableObjects()
				.penaltyLog().penaltyDeath().build());

		userService = new UserService();
		initBtn();
		search();
	}

	private void createWin() {
		LayoutInflater layoutInflater = LayoutInflater.from(this);
		user = layoutInflater.inflate(R.layout.user, null);

		new AlertDialog.Builder(this).setTitle(R.string.title_add)
				.setView(user)
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						add();
					}

				}).setNegativeButton("取消",

				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

					}

				}).show();
	}

	private void initBtn() {
		((Button) findViewById(R.id.add))
				.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						createWin();
					}

				});

		((Button) findViewById(R.id.close))
				.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						exit();
					}
				});

		((Button) findViewById(R.id.search_btn))
				.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						search();
					}
				});
	}

	private void exit() {
		this.finish();
		System.exit(0);
	}

	private void add() {
		Log.i("add", "开始新增数据");
		EditText name = ((EditText) user.findViewById(R.id.name));
		EditText age = ((EditText) user.findViewById(R.id.age));
		StringBuffer params = new StringBuffer();
		params.append("?method=add");
		try {
			params.append("&name="
					+ URLEncoder.encode(name.getText().toString(), "UTF-8"));
			params.append("&age=" + age.getText().toString());
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		userService.request(HTTP_STR + params.toString());
		search();
	}

	private void del(String name, String age) {
		Log.i("del", "开始删除数据");
		StringBuffer params = new StringBuffer();
		params.append("?method=del");
		try {
			params.append("&name=" + URLEncoder.encode(name, "UTF-8"));
			params.append("&age=" + age);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		userService.request(HTTP_STR + params.toString());

		search();
	}

	private void search() {
		Log.i("search", "开始加载数据");
		StringBuffer params = new StringBuffer();
		params.append("?method=search");
		try {
			EditText name = ((EditText) findViewById(R.id.search_name));
			String sname = "";
			if (name.getText() != null)
				sname = name.getText().toString();
			params.append("&name=" + URLEncoder.encode(sname, "UTF-8"));
			JSONObject jobj = userService.request(HTTP_STR + params.toString());
			JSONArray jarr = (JSONArray) jobj.get("data");

			TableLayout table = (TableLayout) findViewById(R.id.vtable);
			table.removeViews(1, table.getChildCount() - 1);
			for (int i = 0; i < jarr.length(); i++) {
				final JSONObject obj = jarr.getJSONObject(i);
				TableRow row = new TableRow(this);
				TextView t = new TextView(this);
				t.setWidth(80);
				t.setGravity(Gravity.CENTER);
				t.setPadding(3, 3, 3, 3);
				t.setText(obj.getString("name"));
				row.addView(t);
				t = new TextView(this);
				t.setGravity(Gravity.CENTER);
				t.setPadding(5, 3, 3, 3);
				t.setText(obj.getString("age"));
				row.addView(t);
				Button b = new Button(this);
				b.setPadding(3, 3, 3, 3);
				b.setWidth(20);
				b.setText("删除");
				b.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub

						try {
							del(obj.getString("name"), obj.getString("age"));
						} catch (JSONException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}

				});
				row.addView(b);

				table.addView(row, new TableLayout.LayoutParams());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

 

 android发送请求公共方法:

/**
 * 
 * @author minn
 * @@@ 394286006
 * @email freemanfreelift@gmail.com
 *
 */
public JSONObject request(String req) {
		JSONObject rsobj=null;
		try {
			HttpClient hc=new DefaultHttpClient();
			HttpGet hg=new HttpGet(req);
			HttpResponse response=hc.execute(hg);
			InputStreamReader isr=new InputStreamReader(response.getEntity().getContent());
		BufferedReader br=new BufferedReader(isr);
		String rs="";
		String rl=null;
		while((rl=br.readLine())!=null)
			rs+=rl;
		isr.close();
		
		rsobj=new JSONObject(rs);

		} catch (Exception e) {
			//e.printStackTrace();
		}
		return rsobj;
	}

 

 

 

j2ee工程主要代码:

 

package minn.service;

/**
 * @author minn
 * @QQ 394286006
 * @email freemanfreelift@gmail.com
 * 
 */
public class UserService {

	DaoOperator daoOperator=new DaoOperator();
	
	public JSONObject search(String name) throws Exception{
		
		JSONObject jobj=new JSONObject();
		try {
			jobj.put("success", true);
			jobj.put("data", daoOperator.query("SELECT name,age FROM androiduser where name like '"+name+"%'"));
			
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			jobj.put("success", false);
			e.printStackTrace();
		}
		
		return jobj;
	}
	
	public JSONObject add(String name ,String age) throws Exception{
		
		JSONObject jobj=new JSONObject();
		try {
			jobj.put("success", true);
			daoOperator.execute("insert into androiduser(name,age) values('"+name+"',"+age+")");
			
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			jobj.put("success", false);
			e.printStackTrace();
		}
		
		return jobj;
	}
	
	
	public JSONObject del(String name,String age) throws Exception{
		
		JSONObject jobj=new JSONObject();
		try {
			jobj.put("success", true);
			daoOperator.execute("delete from androiduser where name='"+name+"' and age="+age);
			
			
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			jobj.put("success", false);
			e.printStackTrace();
		}
		
		return jobj;
	}

}

 效果图:

 

  • 大小: 40.7 KB
  • 大小: 50.1 KB
分享到:
评论

相关推荐

    android增删改查客户端和服务器端

    这是一个android的增删改查的例子,前后台全部都有了,安装上直接使用

    Android实现ListView的增删改查Demo

    这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...

    Android增删改查

    本示例"Android增删改查"深入探讨了如何在Android环境中利用SQLite数据库进行基本的数据操作,包括添加(Insert)、删除(Delete)、修改(Update)和查询(Query)。同时,它还涉及到了Android的SoundPool类,这是...

    android SQLite 增删改查小例子

    在这个“android SQLite 增删改查小例子”中,我们看到一个用于图书管理的应用实例,该应用利用SQLite进行数据操作。下面将详细解释如何在Android中使用SQLite进行基本的增、删、改、查操作。 1. **...

    android之sqlite实现增删改查

    "这是学习及开发SQlite的一个很好的例子,含有其增删改查的所有功能附有完整的代码可以直接运行"这句话说明了本文将提供一个完整的示例代码,用于学习和开发SQLite数据库的增删改查操作。 标签解释 "android SQlite...

    Android代码-Android操作MySQL增删改查

    CRUD_AndroidMySQL Membuat Aplikasi CRUD (Create, Read, Update, Delete) di Android Studio berserta dengan web servicesnya menggunakan ...Ikuti Tutorialnya pada link berikut: CRUD Android dengan MySQL

    android实现数据库的增删改查实例代码

    本实例代码"SQLiteDatabaseDemo"旨在教你如何在Android应用中使用SQLite数据库进行基本的增、删、改、查(CRUD)操作。以下是详细的步骤和知识点讲解: 1. **SQLiteOpenHelper**: 这是Android提供的一个抽象类,...

    SQLite在android中实现增删改查小例子

    本资源对应博文:http://blog.csdn.net/zhshulin/article/details/38872075,在android实现了面向对象的增删改查操作。有问题可以留言,我们一起讨论。

    Android入门小项目(增删查改操作)

    在Android开发领域,一个入门级别的小项目通常会涵盖基本的操作,如增删查改(CRUD,Create、Read、Update、Delete),这是任何数据管理应用的基础。本项目以"Android入门小项目(增删查改操作)"为主题,旨在帮助初学...

    android sqlite android本地数据库增删查改 经典例子

    下面将详细讲解如何在Android中使用SQLite进行数据的增、删、查、改操作。 首先,我们需要创建一个SQLite数据库。在Android中,我们通常通过扩展`SQLiteOpenHelper`类来实现。这个类提供了创建和升级数据库的方法,...

    Android案例:商品展示系统。利用SQLite+ListView,实现商品增删查改

    在实现商品的增删查改功能时,用户界面的设计至关重要。增加商品通常会引导用户填写商品信息,然后通过调用数据库操作方法保存到SQLite中。删除和修改功能则可能需要用户选择特定的商品,系统再弹出相应的对话框确认...

    android之sqlite实现增删改查.docx

    根据提供的文档信息,我们可以深入探讨如何在Android应用中利用SQLite数据库来实现基本的数据增删改查(CRUD:Create, Read, Update, Delete)操作。 ### 标题:Android之SQLite实现增删改查 #### 知识点一:...

    安卓连接数据库及增删改查操作

    本文将深入探讨如何在Android平台上连接数据库,并进行基本的增删改查(CRUD)操作。 首先,Android系统支持SQLite数据库,这是一个轻量级的、嵌入式的关系型数据库,适合移动设备的内存和存储限制。要连接到SQLite...

    一个简单的android sqlite的例子(包含增删改查)

    接下来,我们可以实现对数据库的增删改查操作。例如,插入数据: ```java public void insertData(String name) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ...

    Android SQLite增删查demo

    本教程将通过一个简单的"Android SQLite增删查demo"来讲解如何在Android中操作SQLite数据库。 首先,我们需要在Android项目中添加SQLite的支持。在`build.gradle`文件中,确保依赖库`androidx.room:room-runtime`和...

    android SQLite增删改查及事务处理

    这篇内容将深入讲解如何在Android中使用SQLite进行数据的增删改查(CRUD)操作以及事务处理。 首先,我们来了解SQLite在Android中的基本使用。每个Android应用都有一个SQLiteOpenHelper的子类,这个类主要用于创建...

    xml增删改查for android

    android经常用sax-simple api for xml,但只能读取,于是一个用sax读,用dom增删改的例子就是这个,没在android上编译导入eclipse即可用,可以直接复制到android工程里面用

    android数据库增删改查

    本文将深入探讨如何在Android应用中实现SQLite数据库的增、删、改、查(CRUD)操作。 首先,我们需要创建一个SQLite数据库。在Android中,这通常通过扩展SQLiteOpenHelper类来完成。这个类提供了创建、升级数据库的...

Global site tag (gtag.js) - Google Analytics