使用自定义数据库目录时如何避免'unknown database'错误?



我正在做一个项目,我已经把我的数据库文件夹放在了项目文件夹中。如何将数据库连接到任何目录,而不仅仅是Java中的默认MySQL目录?

String MySQLURL = "jdbc:mysql://localhost:3306/C:\Program Files\SnakeGame";
String UserName = "root";
String Password = "admin";
Connection con = null;
try {
con = DriverManager.getConnection(MySQLURL,UserName,Password);
if (con != null) {
System.out.println("Database connection is successful !!!!");
}
} catch (Exception e) {
e.printStackTrace();
}

当这样做时,我得到这个错误:

java.sql.SQLSyntaxErrorException:未知数据库"c:\program files\蛇游戏">

您的连接URL是错误的

String MySQLURL = "jdbc:mysql://localhost:3306/C:\Program Files\SnakeGame";

我不知道为什么您的MySQLURL包含C:\Program Files\SnakeGame

mysql数据库的连接URL为jdbc:mysql://localhost:3306/[DatabaseName]

其中jdbc是API,mysql是数据库,localhost是运行mysql的服务器名称(我们也可以在这里使用服务器的IP地址(,3306是端口号,[DatabaseName]是在mysql服务器上创建的数据库的名称。

在MySQL服务器中创建数据库后,相应地替换[DatabaseName]名称

localhost:3306/C:\Program Files\SnakeGame结合起来对任何数据库来说都没有什么意义——要么你试图连接到基于文件的数据库(在这种情况下,localhost...部分没有意义(,要么你正在使用基于服务器的数据库(这种情况下C:...部分没有意义。

此外,这个连接字符串对于基于文件的数据库来说意义不大,因为您没有指定特定的文件,只指定了一个路径。

顺便说一句,MySQL是基于服务器的,而不是基于文件的。它需要localhost:3306/部分后面的数据库名称,而不是路径(因此出现错误(。实际数据库程序的物理位置是一个安装/配置问题——它与数据库服务器运行后如何实际连接无关。

这样想:当你调用外部数据库、web服务或网站时,你需要知道它部署到哪个物理文件夹吗?显然不是。当调用MySQL或其他类似数据库时,所涉及的物理文件夹是完全无关的。

其中一条评论指出了这一点,但您是否打算在这里使用SQlite或其他基于文件的数据库?

最新更新