【问题标题】:How to Connect with MySQL Database File( .sql ) using Directory Path Like MS Access?如何使用 MS Access 等目录路径连接 MySQL 数据库文件(.sql)?
【发布时间】:2013-03-05 19:47:01
【问题描述】:

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

这是我的代码

    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 吗?

或者还有其他建议吗?

谢谢。

【问题讨论】:

  • 在您发表评论之前,我正在阅读此链接 hhhh 无论如何谢谢 :)
  • 您的 .sql 文件可能不是数据库文件,而是脚本。
  • 如果你没有得到答案(或一个好的答案),你应该阅读stackoverflow.com/faq#bounty
  • 正确。您可能还想删除您的其他问题并使用两者之间的任何不同详细信息更新此问题。

标签: java mysql connection


【解决方案1】:

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

【讨论】:

  • 谢谢兄弟,你知道问题是我不知道怎么做,我尝试了 5-10 种方式出现同样的错误所以你能给我一个真实的例子吗?
  • @AzadEng dev.mysql.com/usingmysql/java 提供了一些您可能想要查看的示例的链接。
  • 这是一个真实的例子;如果您在本地运行数据库,则主机为 localhost,默认端口为 3306,“yourDatabaseName”将替换为您命名数据库的任何名称。如果您不知道如何启动 MySQL,以下是针对 Windows 的说明:dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html OS X 和 Linux 存在类似的指南。
  • 链接已过期
【解决方案2】:

初步定义

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

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

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

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

答案

无法通过目录路径连接到 MySQL 数据库服务器The only native ways are:

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

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

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

解决方法

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

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

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

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

【讨论】:

  • 嗯,我正在研究它,实际上我在我的电脑上测试它,但让我在其他电脑上测试它。非常感谢您现在 +1 和测试后 +100 :)
  • 另一个问题,我可以在 MySQL 等计算机之间共享这个数据库吗?
  • AFAIK,SQlite 并不是真正设计为来自多个并发进程的访问。但我想您可以通过将 sqlite 文件放在网络位置来共享它。如果驱动程序识别网络路径(如\\fileserver\db.sqlite),那么您就可以开始了。如果没有,那么您可以将网络共享挂载为虚拟驱动器。但是,如果数据库打算由并发线程修改,则需要注意一些问题。我建议你发布另一个关于跨网络共享 SQLite 数据库的问题,以便 SQLite 专家可以参与进来。
  • 尽管如此,我相信如果您需要从多个不同步的进程/计算机访问数据库,那么您实际上需要一个真正的数据库服务器。
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 2017-04-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
相关资源
最近更新 更多