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

时间:2013-03-05 19:47:01

标签: java mysql connection

抱歉也许这是我第二次提出这个问题是因为没有得到任何答案。

这是我的代码

    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?

或者还有其他建议吗?

谢谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

初步定义

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

实际上连接到MySQL数据库服务器,它允许访问数据库。所以必须有一个MySQL服务器才能连接,更多关于以下内容。

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

您可能假设可以连接到文件,因为您习惯使用MS Access文件。我既不是Java也不是MS Access的专家,但我不确定从Java访问MS Access“数据库”文件实际上意味着连接到某些中间件服务器,例如{{3} }。

答案

无法通过目录路径连接到MySQL数据库服务器this ODBC thingy from Microsoft

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

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

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

解决方法

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

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

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

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