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

作者:只要你能好 时间:2023-11-28 14:49:16 

本文实例讲述了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,MongoDB
0
投稿

猜你喜欢

  • 详解Java编程中protected修饰符与static修饰符的作用

    2022-05-11 03:53:17
  • 10个Elasticsearch查询的实用技巧分享

    2022-09-21 07:32:14
  • WPF+SkiaSharp实现自绘弹幕效果

    2022-09-30 09:52:38
  • 详解C# 泛型中的数据类型判定与转换

    2023-05-03 08:08:36
  • Android App中使用ViewPager+Fragment实现滑动切换效果

    2023-01-12 19:51:50
  • 基于私钥加密公钥解密的RSA算法C#实现方法

    2022-12-01 07:52:37
  • ArrayList和LinkedList的区别、扩容机制以及底层的实现方式

    2023-11-27 01:26:57
  • SpringBoot项目在IntelliJ IDEA中如何实现热部署

    2023-10-29 13:30:22
  • Unity通过代码修改按钮点击效果

    2022-07-29 13:19:37
  • Java SpringBoot项目如何优雅的实现操作日志记录

    2022-01-28 11:37:41
  • Java 获取两个List的交集和差集,以及应用场景操作

    2021-11-21 17:49:43
  • 7种形式的Android Dialog使用实例

    2023-02-08 19:41:02
  • 详解C语言的mem系列函数

    2021-07-10 13:10:18
  • SpringCloud Feign实现微服务之间相互请求问题

    2022-08-29 08:20:53
  • Android实现闹钟功能小Dome

    2022-09-11 09:27:14
  • Java堆&优先级队列示例讲解(上)

    2023-04-09 11:09:59
  • spring boot 加载web容器tomcat流程源码分析

    2021-12-05 14:48:38
  • Java使用 try-with-resources 实现自动关闭资源的方法

    2022-01-09 06:54:46
  • Android开发笔记之:深入理解多线程AsyncTask

    2023-07-22 15:16:06
  • Android如何通过命令行操作Sqlite3数据库的方法

    2023-10-01 09:50:11
  • asp之家 软件编程 m.aspxhome.com