抱歉也许这是我第二次提出这个问题是因为没有得到任何答案。
这是我的代码
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?
或者还有其他建议吗?
谢谢。
答案 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:
可能会有一些第三方软件提供其他协议,我不知道,但它们都会减少到同样的问题:必须在某处运行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似乎是一个严肃的候选人。