繁体   English   中英

使用自定义数据库目录时如何避免“未知数据库”错误?

[英]How do I avoid an 'unknown database' error when using a custom database directory?

我正在做一个项目,我已将我的数据库文件夹放在项目文件夹中。 如何与任何目录建立数据库连接,而不仅仅是 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\snakegame'

您的连接 URL 错误

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

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

mysql 数据库的连接 URL 是jdbc:Z81C3B080DAD537DE7E10E032EZ]

Where jdbc is the API, mysql is the database, localhost is the server name on which mysql is running (we may also use the server's IP address here), 3306 is the port number, and [DatabaseName] is the name of the database created在 MySQL 服务器上。

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

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

此外,此连接字符串对于基于文件的数据库几乎没有意义,因为您没有指定特定文件,而只是指定了路径。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM