怎么在Android中連接MongoDB數(shù)據(jù)庫?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為寶山企業(yè)提供專業(yè)的網(wǎng)站制作、網(wǎng)站設(shè)計(jì),寶山網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
MongoDB簡介
Mongodb,分布式文檔存儲(chǔ)數(shù)據(jù)庫,由C++語言編寫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB是一個(gè)高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當(dāng)前NoSql數(shù)據(jù)庫中比較熱門的一種。它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲(chǔ)方式。Mongo使用C++開發(fā)。
Mongo安裝參考
1)下載安裝包文件,解壓到某一文件夾下。
官方下載地址:http://www.mongodb.org/downloads
2)配置環(huán)境變量:在path后添加安裝路徑。
3)啟動(dòng)Mongo數(shù)據(jù)庫:
進(jìn)入“cmd”->鍵入“mongod --dbpath D:\amp\MongoDBDATA”
D:\amp\MongoDBDATA 表示數(shù)據(jù)庫文件存儲(chǔ)路徑
4)啟動(dòng)Mongo客戶端:
mongo 127.0.0.1:27017/admin
Android 連接MongoDB
步驟1:下載并導(dǎo)入jar包到工程
步驟2:安裝MongoDB到PC端(參見MongoDB安裝)
步驟3:編寫代碼連接MongoDB實(shí)現(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(ListdbObjects,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); Listbooks = new ArrayList (); 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 dbObjects = new ArrayList (); 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 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 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 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 convertCursorToList(DBCursor cursor) { List results = new ArrayList (); 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
4. 添加權(quán)限
關(guān)于怎么在Android中連接MongoDB數(shù)據(jù)庫問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。