从 Java 中的另一个类访问 berkeley db

Posted

技术标签:

【中文标题】从 Java 中的另一个类访问 berkeley db【英文标题】:Accessing berkeley db from another class in Java 【发布时间】:2015-04-08 22:08:47 【问题描述】:

我在我的一个 java 类文件中创建了一个数据库,并且想知道如何在另一个 java 类文件中访问/打开该数据库以读取数据。我尝试使用 openDatabase 但它如何知道数据库文件的位置?我搜索了很多论坛,我能找到的只是将代码放在同一个类中,并且只访问数据库对象。

ex.我在我的一个 java 类文件的目录 /documents/ 中创建了一个数据库,而我所有的 java 代码都在其他地方。如何在我的其他源代码中访问和使用该数据库?

编辑:

public static void main(String[] args) 

    try 

        EnvironmentConfig environmentConfig=new EnvironmentConfig();
        environmentConfig.setAllowCreate(true);
        Environment environment=new Environment(new File("user/documents/"),environmentConfig);
        DatabaseConfig databaseConfig=new DatabaseConfig();
        databaseConfig.setAllowCreate(true);
        Database db=environment.openDatabase(null,"mytable",databaseConfig);
    
    catch (Exception e) 
        throw new RuntimeException(e);
 


我尝试了以下方法,但在编译时不断收到此错误。

openDatabase(com.sleepycat.db.Transaction,java.lang.String,java.lang.String,com.sleepycat.db.DatabaseConfig) in com.sleepycat.db.Environment cannot be applied to (<nulltype>,java.lang.String,com.sleepycat.db.DatabaseConfig)
            Database db=environment.openDatabase(null,key,databaseConfig);
                                   ^
1 error

【问题讨论】:

【参考方案1】:

是的,因为它与mysql数据库有关,这意味着您必须有密码和用户名,因为它是一个安全的学校系统,您可以使用mysql连接器访问您创建的数据。

为了更清楚,你必须有 database.java 文件。

那么在该文件中,要了解的主要内容是构造函数和要走的路... 导入java.sql.*;

  public class database
 

   public static database bDatabase = null;
   protected String     connection_url = "";
   protected String     _name    = "";
   protected String     name           = "";
   protected String     user           = "";
   protected String     password       = "";
   protected Class      some_class   = null;
   protected Connection connection     = null;
   protected ResultSet  results        = null;
   protected String     current_table  = "";
   protected Boolean    error          = false;      

   public database(String name, String user, String password)
   
     this(name, user, password, "jdbc:mysql://localhost:3306",    "com.mysql.jdbc.ClassName");
   
  public database(String name, String user, String password, String       connection_url, String any_name)
   
    this.name           = name;
    this.user           = user;
    this.password       = password;
    this.connection_url = connection_url;
    this._name    = any_name;
   
   public static void openDatabase()
   
     try
     
      bDatabase = new database("dbname", "user_id",
          "password", "jdbc:mysql://host",
          "com.mysql.jdbc.Anyclass");
      bDatabase.open();
    
    catch (Exception ex)
    
      throw new InvalidQueryException("Unable to open database ");
     
      

【讨论】:

哦,我的错。我的意思是说一个Java类文件。 是的,我知道,你会在java中声明你的密码,然后你可以在同一个文件夹中下载mysql连接器来访问。 我可以访问数据库,但想知道如何在源代码中使用它。我编辑了帖子以使其更易于理解。 有没有办法只使用berkeley db api而不使用JDBC来访问数据库? 我不确定,但你可能知道使用 php 是可能的

以上是关于从 Java 中的另一个类访问 berkeley db的主要内容,如果未能解决你的问题,请参考以下文章

从 Java Swing 中的另一个类访问 JPanel 变量

如何从同一项目中的另一个类访问主类中的变量? [复制]

如何从 JavaFX 中的另一个控制器类访问 UI 元素?

Java:直接从同一类的另一个实例访问私有字段

仍然可以从 C# 中的另一个类访问私有变量

从 PyQt5 中的另一个类访问变量