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

Java 如何使用类似MS Access的目录路径连接MySQL数据库文件(.sql)?,java,mysql,connection,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.ge

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

这是我的密码

    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连接?

还是有其他建议


谢谢。

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

jdbc:mysql://localhost:3306/yourDatabaseName
参见

初步定义 “连接到MySQL数据库文件”的措辞不正确

一个连接到MySQL数据库服务器,它允许访问数据库。因此,必须有一个MySQL服务器可以连接,下面将详细介绍

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

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

答案 无法通过目录路径连接到MySQL数据库服务器:

  • TCP
  • 本地套接字(仅限Unix服务器)
  • 命名管道(仅限Windows服务器)
  • 共享内存(仅限Windows服务器)
可能有一些第三方软件提供其他协议,我不知道,但它们都归结为同一个问题:必须有一个MySQL服务器在某处运行

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

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

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

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

  • 使用实际上没有服务器的数据库引擎,例如。这似乎是你最好的选择。对于通常的操作,它的SQL语法实际上与MySQL相同。一定有很多JDBC驱动程序。再说一次,我不是Java最好的顾问,但似乎是一个认真的候选人


检查此链接:在您发表评论之前,我正在阅读此链接。谢谢:)您的.sql文件可能不是一个数据库文件,而是一个脚本。如果您没有得到答案(或一个好的答案),您应该阅读正确的答案。你可能还想删除你的另一个问题,并用这两个问题之间的任何不同细节更新这个问题。谢谢兄弟,你知道的是我不知道怎么做,我尝试了5-10种方法,同样的错误发生了,所以你能给我一个真实的例子吗?@AzadEng有一些你可能想研究的例子的链接。这是一个真实的例子;如果您在本地运行数据库,则主机将是localhost,默认端口为3306,“yourDatabaseName”将替换为您命名的数据库。如果你不知道如何启动MySQL,下面是Windows的说明:OSX和Linux也有类似的指南。链接已经过时了。好吧,我正在研究它。实际上我在我的计算机上测试了它,但让我在其他计算机上测试它。非常感谢现在的+1和测试后的+100:)还有一个问题,我可以在MySQL这样的计算机之间共享这个数据库吗?好吧,SQlite并不是真正设计成从多个并发进程进行访问的。但是我想您可以通过将sqlite文件放在网络位置来共享它。如果驱动程序能够识别网络路径(如
\\fileserver\db.sqlite
),那么您就可以开始了。如果没有,则可以将网络共享装载为虚拟驱动器。但是,如果要由并发线程修改数据库,则需要注意一些问题。我建议您发布另一个关于跨网络共享SQLite数据库的问题,以便SQLite专家能够参与进来。不过,我相信,如果您需要从几个不同步的进程/计算机访问数据库,那么您实际上需要一个真正的数据库服务器。