这个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; } }
效果图:
相关推荐
这是一个android的增删改查的例子,前后台全部都有了,安装上直接使用
本代码实现了在android平台上完成数据的增删改查操作
一个个人写的 book manage 管理系统 SQLIte写的 可以参考看看
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
这是学习及开发SQlite的一个很好的例子,含有其增删改查的所有功能 附有完整的代码 可以直接运行
本资源对应博文:http://blog.csdn.net/zhshulin/article/details/38872075,在android实现了面向对象的增删改查操作。有问题可以留言,我们一起讨论。
使用SQLite数据库 实现的Android增删改查小例子,可运行起来
Android入门小项目(简单的增删查改),界面不要介意,这是给刚入门参考的,里面没有做自定义控件,后台是SSM简单搭建的,包含有数据库,开发工具为Android studio与eclipse
一个简单的android sqlite的例子(包含增删改查),是和初学者入门,本人呕心沥血之作,还望大家尊重版权有任何问题可以问我,我的邮箱lipengpeng82010Q@qq.com
使用Eclipse+SDK+ADT开发工具,利用SQLite数据库 + ListView开发技术,实现了一个简易的商品展示系统,其功能模块包括商品信息的增加、删除、修改、查询等。
android经常用sax-simple api for xml,但只能读取,于是一个用sax读,用dom增删改的例子就是这个,没在android上编译导入eclipse即可用,可以直接复制到android工程里面用
该源代码是android平台下的sqlite的案例,包括增删改查例子;尽量使用sqlite3数据库
Android应用源码之Fragment例子_源码
android sqlite数据库 增删改查系统功能实现 数据库创建过程详细,实现了增加、删除、修改,查询的系统功能, 调试成功,可以作为建项目的参考例子,或者直接拿过来使用。
一个比较详细的开发资料。加上三个数据库例子,实现android数据库的建库,增删解查。一个文件读写的例子
android中的 数据库例子 可以执行 增 删 查 改
本例子是一个为新手演示SQLite增删改查的例子源码。可以作为新手学习SQLite的例子,添加成功以后会使用ListView显示历史数据,点击任意一条数据即可删除数据。本项目默认编码GBK编译版本4.2.2。
操作Android SQlite数据库,增删改查,例子比较完善,界面友好,适合初学者使用