小编典典

如何使用类似于MS Access的目录路径与MySQL数据库文件(.sql)连接?

java

对不起,也许这是我第二次因为没有得到任何答案而问这个问题。

这是我的代码

    try{
    File  f = new File("Database.sql");
    if(f.exists()){
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/"+f.getName(),"","");
    }else{
        f.createNewFile();
        System.out.println("file created");
        //also do the connection
    }
    }catch(Exception ex){
       System.out.println(ex.getMessage());
    }

这是错误:

通信链接失败最近一次成功发送到服务器的数据包是在0毫秒之前。 驱动程序尚未收到来自服务器的任何数据包。

这个问题的目的是:我正在创建一个适合许多用户的应用程序,问题是他们对计算机一无所知,因此我必须使其尽可能简单。

那么 ,有什么方法可以通过目录路径与MY SQL进行连接,例如MS ACCESS?

或者还有其他建议吗?

谢谢 。


阅读 260

收藏
2020-11-30

共1个答案

小编典典

初步定义

“连接到 MySQL数据库文件 ”的措词不正确。

一个真正 连接 到MySQL数据库 服务器 ,它允许 访问 一个 数据库
。因此,必须有一个要连接的MySQL服务器,有关更多信息,请参见下文。

您的Database.sql文件是数据库转储文件,也就是说,是哑文件(纯文本)。在解释您的SQL查询之后,您需要一个专门的过程来从中提取数据:数据库服务器。

您可能会假定一个人可以连接到一个 文件, 因为您曾经使用过MS Access文件。我既不是Java专家也不是MS
Access专家,但是我不了解从Java访问MS Access“数据库”文件实际上意味着连接到某些中间件 服务器
,例如Microsoft的ODBC

答案

无法通过目录路径连接到MySQL数据库 服务器
唯一的本地方法是

  • TCP协议
  • 本地套接字(仅限Unix服务器)
  • 命名管道(仅Windows服务器)
  • 共享内存(仅Windows服务器)

可能存在一些第三方软件,它们提供其他协议,我不知道这些协议,但是它们都会减少到同一问题:必须在某个地方运行MySQL服务器。

第二种想法实际上是在不运行外部MySQL服务器的情况下访问MySQL数据的一种方法:
嵌入式MySQL服务器C库
。我从未亲自尝试过,但是对于独立应用程序来说,这似乎是一个可行的选择。但是,如果您打算跨多个进程或计算机共享相同的MySQL数据,我认为这不是理想的解决方案。

解决方法

现在,我了解到您正在基于SQL转储文件(可能是从MySQL服务器转储)形式的数据构建Java桌面应用程序。如果您希望用户能够从此Java应用程序访问此数据,则可以看到一些选项:

  • 在他们的计算机上安装MySQL服务器,并将此转储加载到其中。如果我听清楚你的话,那显然是地狱,但不切实际。尽管我猜想您的Java应用程序肯定可以自动执行此安装。

  • 在自己的计算机上安装MySQL服务器,并使其可从用户的计算机访问。主要缺点:它要求您的用户已连接。您可能还想为每个用户创建一个不同的数据库。

  • 使用实际上没有服务器的数据库引擎,例如SQLite。这似乎是您的最佳选择。对于常规操作,其SQL语法实际上与MySQL相同。必须有很多JDBC驱动程序。同样,我不是Java方面的最佳顾问,但是这个人似乎是一个不错的候选人。

2020-11-30