0

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

这是我的代码

    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 毫秒前。驱动程序没有收到来自服务器的任何数据包。

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

那么有什么方法可以通过目录路径与 MYSQL 连接,例如 MS ACCESS 吗?

或者还有其他建议吗?

谢谢 。

4

2 回答 2

5

AFAIK,您不能在 MySQL 的 JDBC url 中插入文件名。MySQL 需要运行,并且您需要通过其 TCP 端口连接到它。就像是:

jdbc:mysql://localhost:3306/yourDatabaseName

请参阅http://dev.mysql.com/doc/refman/5.6/en/connector-j-reference-configuration-properties.html

于 2013-03-05T19:53:53.820 回答
4

初步定义

“连接到MySQL 数据库文件”是不恰当的措辞。

一个实际上连接到一个 MySQL 数据库服务器,它允许访问一个数据库。所以必须有一个 MySQL 服务器可以连接,下面会详细介绍。

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

您可能会假设可以连接到文件,因为您习惯于使用 MS Access 文件。我既不是 Java 专家,也不是 MS Access 专家,但我不明白从 Java 访问 MS Access“数据库”文件实际上意味着连接到一些中间件服务器,例如Microsoft 的这个 ODBC thingy

答案

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

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

可能有一些第三方软件提供其他协议,我不知道,但它们都归结为同一个问题:必须有一个 MySQL 服务器在某个地方运行。

再三考虑,实际上有一种方法可以在没有运行外部 MySQL 服务器的情况下访问 MySQL 数据:嵌入式 MySQL 服务器 C 库。我自己从未尝试过,但它看起来是独立应用程序的可行选择。但是,如果您计划在多个进程或计算机之间共享相同的 MySQL 数据,我不认为这是一个理想的解决方案。

解决方法

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

  • 在他们的计算机上安装 MySQL 服务器并将此转储加载到其中。很明显,但不切实际,如果我听得清楚的话。虽然我猜这个安装肯定可以由您的 Java 应用程序自动执行。

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

  • 使用实际的无服务器数据库引擎,例如SQLite。这似乎是您的最佳选择。对于常规操作,它的 SQL 语法几乎与 MySQL 相同。它必须有大量的 JDBC 驱动程序。再说一次,我不是 Java 最好的顾问,但这似乎是一个认真的候选人。

于 2013-03-08T00:24:59.617 回答