如何使用MS Access等目录路径连接MySQL数据库文件(.sql)?

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

这是我的代码

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?

或者还有其他建议吗?

谢谢 。

初步定义

“连接到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转储文件forms的数据的Java桌面应用程序,可能是从MySQL服务器转储的。 如果您希望用户能够从此Java应用程序访问此数据,我可以看到以下几个选项:

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

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

  • 使用实际无服务器的数据库引擎,如SQLite 。 这似乎是您的最佳选择。 对于通常的操作,它的SQL语法几乎与MySQL相同。 必须有足够的JDBC驱动程序。 同样,我不是Java中最好的顾问,但这个似乎是一个严肃的候选人。

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