最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程連接MongoDB及增刪改查等基本操作示例

 更新時間:2017年07月13日 10:17:09   作者:只要你能好  
這篇文章主要介紹了Android編程連接MongoDB及增刪改查等基本操作,簡單介紹了MongoDB功能、概念、使用方法及Android操作MongoDB數(shù)據(jù)庫的基本技巧,需要的朋友可以參考下

本文實例講述了Android編程連接MongoDB及增刪改查等基本操作。分享給大家供大家參考,具體如下:

MongoDB簡介

Mongodb,分布式文檔存儲數(shù)據(jù)庫,由C++語言編寫,旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當前NoSql數(shù)據(jù)庫中比較熱門的一種。它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲方式。Mongo使用C++開發(fā)。

Mongo安裝參考

1)下載安裝包文件,解壓到某一文件夾下。
官方下載地址:http://www.mongodb.org/downloads
2)配置環(huán)境變量:在path后添加安裝路徑。
3)啟動Mongo數(shù)據(jù)庫:
進入“cmd”->鍵入“mongod --dbpath D:\amp\MongoDBDATA”
D:\amp\MongoDBDATA 表示數(shù)據(jù)庫文件存儲路徑
4)啟動Mongo客戶端:
mongo 127.0.0.1:27017/admin

Android 連接MongoDB

步驟1:下載并導(dǎo)入jar包到工程
步驟2:安裝MongoDB到PC端(參見MongoDB安裝)
步驟3:編寫代碼連接MongoDB實現(xiàn)簡單操作(增刪改查)

代碼參考(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("操作結(jié)果碼:"+result.toString());
      }else if(result instanceof List)
      {
        String resText = "";
        for(String res : ((List<String>) result))
        {
          resText += res + "\n";
        }
        showDialogWithText("操作結(jié)果\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操作結(jié)果");
    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.  添加權(quán)限

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

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • Android實現(xiàn)字母雨的效果

    Android實現(xiàn)字母雨的效果

    在學(xué)習(xí)Android的時候見到別人實現(xiàn)的黑客帝國的字母雨效果,感覺效果很炫,今天我們也來實現(xiàn)一下。
    2016-07-07
  • RxJava2配置及使用詳解

    RxJava2配置及使用詳解

    這篇文章主要介紹了RxJava2配置及使用詳解,RxJava2.0是一個非常棒的流式編程,有興趣的可以了解一下
    2017-06-06
  • Android應(yīng)用圖標上的小紅點Badge實踐代碼

    Android應(yīng)用圖標上的小紅點Badge實踐代碼

    本篇文章主要介紹了Android應(yīng)用圖標上的小紅點Badge實踐代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • Android實現(xiàn)帶進度條的WebView

    Android實現(xiàn)帶進度條的WebView

    這篇文章主要介紹了Android實現(xiàn)帶進度條的WebView,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 詳解okhttp3 請求頭不能為中文的坑

    詳解okhttp3 請求頭不能為中文的坑

    這篇文章主要介紹了詳解okhttp3 請求頭不能為中文的坑,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • 詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲

    詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲

    LeanCloud是一種簡單高效的數(shù)據(jù)和文件存儲服務(wù),本文主要介紹了利用LeanCloud來進行網(wǎng)絡(luò)數(shù)據(jù)的存儲的實現(xiàn)方法。具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • Flutter實現(xiàn)懸浮分組列表功能

    Flutter實現(xiàn)懸浮分組列表功能

    這篇文章主要介紹了Flutter-實現(xiàn)懸浮分組列表,我們將介紹如何使用 Flutter 實現(xiàn)一個帶有分組列表的應(yīng)用程序,我們將通過 CustomScrollView 和 Sliver 組件來實現(xiàn)該功能,需要的朋友可以參考下
    2024-08-08
  • Kotlin 使用高階函數(shù)實現(xiàn)回調(diào)方式

    Kotlin 使用高階函數(shù)實現(xiàn)回調(diào)方式

    這篇文章主要介紹了Kotlin 使用高階函數(shù)實現(xiàn)回調(diào)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • android圖片類型之間相互轉(zhuǎn)換實現(xiàn)代碼

    android圖片類型之間相互轉(zhuǎn)換實現(xiàn)代碼

    這篇文章主要介紹了android圖片類型之間相互轉(zhuǎn)換的方法,涉及Android實現(xiàn)各種常用圖片類型及字節(jié)類型的轉(zhuǎn)換技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android快速實現(xiàn)斷點續(xù)傳的方法

    Android快速實現(xiàn)斷點續(xù)傳的方法

    這篇文章主要為大家詳細介紹了Android快速實現(xiàn)斷點續(xù)傳的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

襄汾县| 商洛市| 兴城市| 芒康县| 江津市| 聂荣县| 九龙城区| 虞城县| 滕州市| 晋中市| 景宁| 江达县| 鄯善县| 于田县| 牡丹江市| 肥西县| 崇左市| 清水河县| 阿拉尔市| 德庆县| 台前县| 清苑县| 中宁县| 彭阳县| 凤台县| 博兴县| 西和县| 成安县| 乡城县| 西畴县| 那曲县| 克什克腾旗| 嘉善县| 怀仁县| 循化| 都江堰市| 新乐市| 绿春县| 黑水县| 鸡泽县| 东阿县|