使用jdbc驱动程序连接MongoDB

voj3qocg  于 2023-10-16  发布在  Go
关注(0)|答案(7)|浏览(344)

目的是通过JAVA连接MongoDB远程服务器:

URL = "jdbc:mongo://" + serverIP + ":"
    + port+ "/" +databaseName;                     
    Class.forName("mongodb.jdbc.MongoDriver");
    dbConn = getConnection(URL,mongo1, mongo1);

已尝试Unity_trial.Jar、mongo_version.jar文件,但出现错误:*错误'mongodb.jdbc.MongoDriver' classNameNotFound.
如果我注解class.forname行,下一个错误是

URL = "jdbc:mongo://" + serverIP + ":" + port
    + "/" +databaseName;

格式不正确。我不知道我在哪里犯了错误。提前感谢您的帮助。

gkn4icbw

gkn4icbw1#

如果你得到一个ClassNotFoundException,问题是包含mongodb.jdbc.MongoDriver类的jar不在你的类路径上。如果你不确定这个类在哪个JAR中,我建议你获取7-Zip,这样你就可以检查jar的内容,自己看看这个类是否在那里。
使用您的方法连接到MongoDB的正确方法是:

Class.forName("mongodb.jdbc.MongoDriver");
String URL = "jdbc:mongo://<servername>:<port>/<databaseName>";
Connection jdbcConn = DriverManager.getConnection(url,"user","pass");

但是MongoDB并不是真的要与JDBC一起使用,所以如果您的需求允许,我建议使用“mongoDB”方式获得连接。

MongoClient client = new MongoClient("localhost");

有关如何使用此方法的详细信息,请参阅see the MongoDB docs

o2gm4chl

o2gm4chl2#

您可以查看此项目:
https://github.com/erh/mongo-jdbc
有两个例子。
但一般来说,我建议使用MongoDB客户端或一些Spring Data 抽象。

olhwl3o2

olhwl3o23#

我知道现在回答已经很晚了,但可能会帮助别人。如果你是从cmd编译和运行你的代码,那么在编译之前为mongo.jar设置classpath,如下所示:

set classpath=C:\DemoProject\java db\Mongo\mongo.jar;

然后运行代码。
或者,如果你使用的是eclipse这样的编辑器,那么把这个jar文件添加到你的lib文件夹中。

wnvonmuf

wnvonmuf4#

DbSchema数据库设计器提供了一个开源的MongoDb JDBC驱动程序,它支持原生的MongoDb查询,包括find(),projects,aggregate等。驱动程序正在使用内部嵌入式JavaScript引擎。驱动程序是Open Source on GitHub。一些驱动程序功能:

  • 支持原生MongoDb queries
  • 调用DatabaseMetaData方法可以“猜测"集合结构,因此创建了一个”虚拟模式“。Designer for MongoDB使用它来表示MongoDb数据库结构,如下图所示。
  • 实现大多数JDBC驱动程序方法。使用原生MongoDB JDBC URL进行连接,这意味着连接的全部功能。

和一段关于如何使用驱动程序的代码

Class.forName("com.dbschema.MongoDbJdbcDriver");
Properties properties = new Properties();
properties.put("user", "someuser");
properties.put("password", "somepassword" );
Connection con = DriverManager.getConnection("jdbc:mongodb://host1:9160/keyspace1", properties);
// OTHER URL (SAME AS FOR MONGODB NATIVE DRIVER): mongodb://db1.example.net,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000
String query = "db.sampleCollection().find()";
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery( query );
Object json = rs.getObject(1);
zaq34kh6

zaq34kh65#

今天早上我遇到了这个问题。密钥丢失mongo-java-driver.jar。当我添加jar时,项目可以正常运行。

6ju8rftf

6ju8rftf6#

第一个选项

MongoClient mongoClient = new MongoClient( "1.2.3.4",27017 );
    MongoDatabase database =  mongoClient.getDatabase(dataBase);
    MongoCollection<Document> collection = database.getCollection(DBcollection);

另一个选择

MongoClientURI connectionString = new MongoClientURI("mongodb://1.2.3.4:27017");
     MongoClient mongoClient = new MongoClient(connectionString);
    MongoDatabase database =  mongoClient.getDatabase(dataBase);
    MongoCollection collection = database.getCollection(DBcollection);
ajsxfq5m

ajsxfq5m7#

(我知道这是一个 * 非常 * 晚的答案,但因为我昨天才挣扎过,我无论如何都会发布它)
现在,Unity JDBC driver附带了一个完整的Java代码示例。简而言之:

  • 在CLASSPATH中包含jar文件
  • 使用mongodb.jdbc引用它
    Java代码
<usual java.sql import stuff>
import mongodb.jdbc.MongoStatement;
 
...
    Connection con = null;
    String sql;

    try
    {
        // Create new instance of Mongo JDBC Driver and make connection.
        System.out.println("Registering Driver.");

        // Note: Registering driver using Class.forName() is not required.
        Class.forName("mongodb.jdbc.MongoDriver");

        // Connect to the URL. The last part is the database name (tpch in this case).
        String url = "jdbc:mongodb://server/database/tpch?rebuildschema=true";

        System.out.println("Making a connection to: " + url);
        con = DriverManager.getConnection(url, "user", "password");
        System.out.println("Connection successful.\n");
        ... <run queries etc>

构建+运行

javac -cp .;../unityjdbc.jar test/ExampleQuery.java
java -cp .;../unityjdbc.jar test.ExampleQuery

相关问题