欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程连接MongoDB及增删改查等基本操作示例

程序员文章站 2022-07-02 12:07:11
本文实例讲述了android编程连接mongodb及增删改查等基本操作。分享给大家供大家参考,具体如下: mongodb简介 mongodb,分布式文档存储数据库,由c...

本文实例讲述了android编程连接mongodb及增删改查等基本操作。分享给大家供大家参考,具体如下:

mongodb简介

mongodb,分布式文档存储数据库,由c++语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案。mongodb是一个高性能,开源,无模式的文档型数据库,是当前nosql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。mongo使用c++开发。

mongo安装参考

1)下载安装包文件,解压到某一文件夹下。
官方下载地址:http://www.mongodb.org/downloads
2)配置环境变量:在path后添加安装路径。
3)启动mongo数据库:
进入“cmd”->键入“mongod --dbpath d:\amp\mongodbdata”
d:\amp\mongodbdata 表示数据库文件存储路径
4)启动mongo客户端:
mongo 127.0.0.1:27017/admin

android 连接mongodb

步骤1:下载并导入jar包到工程
步骤2:安装mongodb到pc端(参见mongodb安装)
步骤3:编写代码连接mongodb实现简单操作(增删改查)

代码参考(android端,也适用于java等工程)

1.  mongodbutil.java

package com.hills.happytest.utils;
import java.util.list;
import org.bson.types.objectid;
import com.mongodb.basicdbobject;
import com.mongodb.db;
import com.mongodb.dbcollection;
import com.mongodb.dbcursor;
import com.mongodb.dbobject;
import com.mongodb.mongo;
/**
 * class name: mongodbutil.java
 * function:
 *     the util that mongodb operate.
 *   modifications:
 *
 * @author gym yung.
 * @datetime 2014-10-29 下午1:56:49
 * @version 1.0
 */
public class mongodbutil {
  static mongo connection = null;
  static db db = null;
  public mongodbutil(string dbname) throws exception
  {
    connection = new mongo("10.0.2.2:27017");
    db = connection.getdb(dbname);
  }
  public static mongo getconnection() {
    return connection;
  }
  /**
   * create a blanket collection.
   * @param collname :collection name.
   */
  public void createcollection(string collname)
  {
    dbobject dbs = new basicdbobject();
    dbs.put("test", "test");
    db.createcollection(collname, dbs);
  }
  /**
   * insert dbobject into collection.
   * @param dbobject
   * @param collname
   */
  public void insert(dbobject dbobject,string collname)
  {
    dbcollection collection = db.getcollection(collname);
    collection.insert(dbobject);
  }
  /**
   * insert dbobject list into collection.
   * @param dbobjects
   * @param collname
   */
  public void insertbatch(list<dbobject> dbobjects,string collname)
  {
    dbcollection collection = db.getcollection(collname);
    collection.insert(dbobjects);
  }
  /**
   * delete data by id.
   * @param id
   * @param collname
   * @return
   */
  public int deletebyid(string id,string collname)
  {
    dbcollection collection = db.getcollection(collname);
    dbobject dbs = new basicdbobject("_id", new objectid(id));
    int counts = collection.remove(dbs).getn();
    return counts;
  }
  /**
   * delete data by condition.
   * @param dbobject
   * @param collname
   * @return
   */
  public int deletebydbs(dbobject dbobject,string collname)
  {
    dbcollection collection = db.getcollection(collname);
    int count = collection.remove(dbobject).getn();
    return count;
  }
  /**
   * update data.
   * @param find
   * @param update
   * @param upsert
   * @param multi
   * @param collname
   * @return
   */
  public int update(dbobject find,dbobject update,boolean upsert,boolean multi,string collname)
  {
    dbcollection collection = db.getcollection(collname);
    int count = collection.update(find, update, upsert, multi).getn();
    return count;
  }
  /**
   * find data with page.
   * @param ref
   * @param keys
   * @param start
   * @param limit
   * @param collname
   * @return
   */
  public dbcursor findwithpage(dbobject where,dbobject selection,int start,int limit,string collname)
  {
    dbcursor cursor = findnopage(where, selection, collname);
    return cursor.limit(limit).skip(start);
  }
  /**
   * find data no page.
   * @param ref
   * @param keys
   * @param collname
   * @return
   */
  public dbcursor findnopage(dbobject where,dbobject selection,string collname)
  {
    dbcollection collection = db.getcollection(collname);
    dbcursor cursor = collection.find(where, selection);
    return cursor;
  }
}

2. mongodbdao.java

package com.hills.happytest.utils;
import java.util.arraylist;
import java.util.list;
import com.mongodb.basicdbobject;
import com.mongodb.dbcursor;
import com.mongodb.dbobject;
/**
 * class name: mongodbdao.java
 * function:
 *     the data dao that mongodb operate.
 *   modifications:
 *
 * @author administrator
 * @datetime 2014-10-29 下午1:57:58
 * @version 1.0
 */
public class mongodbdao {
  private static mongodbutil mongodb;
  // init. mongodbutil.
  static{
    try {
      mongodb = new mongodbutil("test");
    } catch (exception e) {
      e.printstacktrace();
    }
  }
  /**
   * test create a blanket collection.
   * @param collname :collection name.
   */
  public void createcollectiontest(string collname)
  {
    mongodb.createcollection(collname);
  }
  /**
   * test insert dbobject into collection.
   * @param collname collection name.
   */
  public void inserttest(string collname)
  {
    dbobject dbs = new basicdbobject();
    dbs.put("name", "gymyung");
    dbs.put("age", 20);
    list<string> books = new arraylist<string>();
    books.add("extjs");
    books.add("mongdb");
    books.add("java");
    dbs.put("books", books);
    mongodb.insert(dbs, collname);
  }
  /**
   * test insert dbobject list into collection.
   * @param collname collection name.
   */
  public void insertbatchtest(string collname)
  {
    list<dbobject> dbobjects = new arraylist<dbobject>();
    dbobject jim2 = new basicdbobject("name", "jim2");
    dbobject liuting = new basicdbobject();
    liuting.put("name", "liuting");
    liuting.put("age", "22");
    dbobjects.add(jim2);
    dbobjects.add(liuting);
    mongodb.insertbatch(dbobjects, collname);
  }
  /**
   * test delete data by id.
   * @param collname collection name.
   * @return operate result code.
   */
  public int deletebyidtest(string collname)
  {
    int counts = mongodb.deletebyid("54507d19cbbd7a385c129ef5", collname);
    return counts;
  }
  /**
   * test delete data by condition.
   * @param collname collection name.
   * @return operate result code.
   */
  public int deletebydbstest(string collname)
  {
    dbobject jim2 = new basicdbobject("name", "jim2");
    int count = mongodb.deletebydbs(jim2, collname);
    return count;
  }
  /**
   * test update data.
   * @param collname collection name.
   * @return operate result code.
   */
  public int updatetest(string collname)
  {
    dbobject liuting = new basicdbobject();
    dbobject liuting2 = new basicdbobject();
    liuting2.put("$set", new basicdbobject("gender", "female"));
    int count = mongodb.update(liuting, liuting2, false, true, collname);
    return count;
  }
  /**
   * test find data with page.
   * @param collname collection name.
   * @return string list result.
   */
  public list<string> findwithpagetest(string collname)
  {
    dbcursor cursor = mongodb.findwithpage(null, null, 0, 3, collname);
    return convertcursortolist(cursor);
  }
  /**
   * test find data with condition.
   * @param collname collection name.
   * @return string list result.
   */
  public list<string> findwithconditiontest(string collname)
  {
    dbobject where = new basicdbobject();
    where.put("age", new basicdbobject("$lte", 26));
    where.put("gender", "female");
    dbcursor cursor = mongodb.findnopage(where, null,collname);
    return convertcursortolist(cursor);
  }
  /**
   * test find data no page.
   * @param collname collection name.
   * @return string list result.
   */
  public list<string> findnopagetest(string collname)
  {
    dbobject keys = new basicdbobject();
    keys.put("_id", false);
    keys.put("name", true);
    keys.put("age", true);
    dbcursor cursor = mongodb.findnopage(null, keys, collname);
    return convertcursortolist(cursor);
  }
  /**
   * convert cursor to list.
   * @param cursor required dbcursor.
   * @return string list result.
   */
  private list<string> convertcursortolist(dbcursor cursor)
  {
    list<string> results = new arraylist<string>();
    while(cursor.hasnext())
    {
      dbobject dbobject = cursor.next();
      for(string key : dbobject.keyset())
      {
        results.add("{"+key+":"+dbobject.get(key)+"}");
      }
    }
    return results;
  }
}

3. testactivity.java

package com.hills.happytest;
import java.util.list;
import android.app.activity;
import android.app.alertdialog;
import android.content.dialoginterface;
import android.os.asynctask;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import com.hills.happytest.utils.mongodbdao;
import com.hills.happytest.utils.mongodbutil;
/**
 * class name: testactivity.java
 * function:
 *     test mongodb operate on android device.
 *   modifications:
 *
 * @author gym yung.
 * @datetime 2014-10-29 下午1:53:40
 * @version 1.0
 */
public class testactivity extends activity implements onclicklistener{
  /************** component in layout. ***************/
  private button mongotestbtn1;
  private button mongotestbtn2;
  private button mongotestbtn3;
  private button mongotestbtn4;
  private button mongotestbtn5;
  private button mongotestbtn6;
  private button mongotestbtn7;
  private button mongotestbtn8;
  // the object use to mongodb operate.
  private mongodbdao mongodbdao;
  // the collection name in mongodb.
  private string collname = "androiddb";
  /************** operate code ********************/
  private final int create_collection_test = 100;
  private final int insert_test = 101;
  private final int insert_batch_test = 102;
  private final int delete_by_id_test = 103;
  private final int delete_by_dbs_test = 104;
  private final int update_test = 105;
  private final int find_with_page_test = 106;
  private final int find_nopage_test = 107;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.mongodb_test);
    findviewandsetlistener();
    mongodbdao = new mongodbdao();
  }
  /**
   * function:
   *   find view and set listener.
   * @author administrator
   * @datetime 2014-10-29 下午1:08:50
   */
  private void findviewandsetlistener() {
    mongotestbtn1 = (button) findviewbyid(r.id.mongodb_btn1);
    mongotestbtn2 = (button) findviewbyid(r.id.mongodb_btn2);
    mongotestbtn3 = (button) findviewbyid(r.id.mongodb_btn3);
    mongotestbtn4 = (button) findviewbyid(r.id.mongodb_btn4);
    mongotestbtn5 = (button) findviewbyid(r.id.mongodb_btn5);
    mongotestbtn6 = (button) findviewbyid(r.id.mongodb_btn6);
    mongotestbtn7 = (button) findviewbyid(r.id.mongodb_btn7);
    mongotestbtn8 = (button) findviewbyid(r.id.mongodb_btn8);
    mongotestbtn1.setonclicklistener(this);
    mongotestbtn2.setonclicklistener(this);
    mongotestbtn3.setonclicklistener(this);
    mongotestbtn4.setonclicklistener(this);
    mongotestbtn5.setonclicklistener(this);
    mongotestbtn6.setonclicklistener(this);
    mongotestbtn7.setonclicklistener(this);
    mongotestbtn8.setonclicklistener(this);
  }
  @override
  public void onclick(view v) {
    myasynctast myasynctast = new myasynctast();
    switch(v.getid()){
    case r.id.mongodb_btn1:
      myasynctast.execute(create_collection_test);
      break;
    case r.id.mongodb_btn2:
      myasynctast.execute(insert_test);
      break;
    case r.id.mongodb_btn3:
      myasynctast.execute(insert_batch_test);
      break;
    case r.id.mongodb_btn4:
      myasynctast.execute(delete_by_id_test);
      break;
    case r.id.mongodb_btn5:
      myasynctast.execute(delete_by_dbs_test);
      break;
    case r.id.mongodb_btn6:
      myasynctast.execute(update_test);
      break;
    case r.id.mongodb_btn7:
      myasynctast.execute(find_with_page_test);
      break;
    case r.id.mongodb_btn8:
      myasynctast.execute(find_nopage_test);
      break;
    }
  }
  /**
   * class name: testactivity.java
   * function:
   *     execute internet task by async...
   *   modifications:
   *
   * @author administrator
   * @datetime 2014-10-29 下午1:54:34
   * @version 1.0
   */
  class myasynctast extends asynctask<object, object, object>{
    @override
    protected object doinbackground(object... params) {
      object result = null;
      switch(integer.parseint(params[0].tostring()))
      {
        case create_collection_test:
          mongodbdao.createcollectiontest(collname);
          break;
        case insert_test:
          mongodbdao.inserttest(collname);
          break;
        case insert_batch_test:
          mongodbdao.insertbatchtest(collname);
          break;
        case delete_by_id_test:
          result = mongodbdao.deletebyidtest(collname);
          break;
        case delete_by_dbs_test:
          result = mongodbdao.deletebydbstest(collname);
          break;
        case update_test:
          result = mongodbdao.updatetest(collname);
          break;
        case find_with_page_test:
          result = mongodbdao.findwithpagetest(collname);
          break;
        case find_nopage_test:
          result = mongodbdao.findnopagetest(collname);
          break;
      }
      return result;
    }
    @suppresswarnings("unchecked")
    @override
    protected void onpostexecute(object result) {
      if(result instanceof integer)
      {
        showdialogwithtext("操作结果码:"+result.tostring());
      }else if(result instanceof list)
      {
        string restext = "";
        for(string res : ((list<string>) result))
        {
          restext += res + "\n";
        }
        showdialogwithtext("操作结果\n:"+restext);
      }
      super.onpostexecute(result);
    }
  }
  /**
   * function:
   *   show dialog with text.
   * @author administrator
   * @datetime 2014-10-29 下午1:21:34
   * @param text
   */
  private void showdialogwithtext(string text)
  {
    alertdialog.builder builder = new alertdialog.builder(this);
    builder.seticon(r.drawable.ic_launcher);
    builder.settitle("mongodb操作结果");
    builder.setmessage(text);
    builder.setneutralbutton("确定", new dialoginterface.onclicklistener()
    {
      @override
      public void onclick(dialoginterface dialog, int which)
      {
        dialog.dismiss();
      }
    });
    builder.create().show();
  }
  @override
  protected void ondestroy() {
    // close mongodb connection if it is not null.
    if(mongodbutil.getconnection() != null)
    {
      mongodbutil.getconnection().close();
    }
    super.ondestroy();
  }
}

4.  添加权限

<uses-permission android:name="android.permission.internet"/>

更多关于android相关内容感兴趣的读者可查看本站专题:《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。