当前位置: 代码迷 >> java >> 如何连接到Android中的MongoDB数据库?
  详细解决方案

如何连接到Android中的MongoDB数据库?

热度:64   发布时间:2023-08-02 10:40:06.0

这就是我向项目中添加Java驱动程序的方法

compile 'org.mongodb:mongo-java-driver:2.13.2'

在我运行我的Android应用程序后,Gradle粉碎了。 如果我直接添加jar,我的应用程序无论如何都会崩溃。

连接代码如下:

MongoClient mongoClient = new MongoClient("mongodb://Dbuser:dbpass@ds047692.mongolab.com:47692");
DB db = mongoClient.getDB("testdb");
Set<String> collectionNames = db.getCollectionNames();

我只需要从我的应用程序连接到mongo数据库。 我不确定我的连接字符串的正确性。 在我的数据库帐户中,我发现:

要通过标准URI使用驱动程序进行连接:mongodb:// blablauser:password@ds047692.mongolab.com:47692 / urdb

但在代码中它没有连接。

我使用mongo-java-driver。 但每次我尝试甚至读我的db我得到

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.artem.mongodb/com.example.artem.mongodb.MainActivity}: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=ds047692.mongolab.com:47692, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketException: socket failed: EACCES (Permission denied)}, caused by {android.system.ErrnoException: socket failed: EACCES (Permission denied)}}]

Document myDoc = collection.find().first();//crash point

为什么我无法访问自己的数据库?

试试这个

MongoClientURI mongoUri  = new MongoClientURI("mongodb://Dbuser:dbpass@ds047692.mongolab.com:47692");
MongoClient mongoClient = new MongoClient(mongoUri);
DB db = mongoClient.getDB("testdb");
Set<String> collectionNames = db.getCollectionNames();

首先,您需要将uri转换为MongoClientURI格式。

我不知道你是否解决了它,但我有同样的问题,我使用这个与http请求。

  相关解决方案