gpt4 book ai didi

java.sql.SQLSyntaxErrorException : Unknown database 'userinfo'

转载 作者:行者123 更新时间:2023-12-01 18:04:53 25 4
gpt4 key购买 nike

我显然有一个名为 userinfo 的数据库,其中有一个名为 userName 的表。我正在使用 XAMPP

public class DatabaseHelper {
private static final String dbName = "userinfo";
Connection connection;
Statement stmt = null;
Timestamp date;

public Connection getConnection(){

String dbName = "userinfo";
String userName="root";
String password="12345678";

try {
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
connection= DriverManager.getConnection("jdbc:mysql://localhost/"+dbName,userName,password);


} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
createUsersTable();
return connection;

}

public void createUsersTable() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost/"+dbName);
stmt = connection.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS Users"
+ "(Id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ " Firstname TEXT NOT NULL,"
+ " Lastname TEXT NOT NULL,"
+ " Username TEXT NOT NULL,"
+ " Password TEXT NOT NULL,"
+ " TotalAmount DOUBLE NOT NULL,"
+ " StockAmount DOUBLE NOT NULL,"
+ " Email TEXT NOT NULL" + ");";
stmt.executeUpdate(sql);
stmt.close();
connection.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
System.out.println("User table creation successful");
}

我收到的错误:警告:通过版本 8.0.131 的 JavaFX 运行时使用版本 8.0.171 的 JavaFX API 加载 FXML 文档java.sql.SQLSyntaxErrorException:未知的数据库“userinfo”

取消日期:这是我现在遇到的错误 2020 年 3 月 7 日 2:58:56 PM javafx.fxml.FXMLLoader$ValueElement processValue警告:通过版本 8.0.131 的 JavaFX 运行时使用版本 8.0.171 的 JavaFX API 加载 FXML 文档java.sql.SQLException:用户''@'localhost'访问被拒绝(使用密码:NO)

最佳答案

这个问题不完整,因此我们无法给您明确的答案。我已评论指出您需要提供的额外信息....如果您想要完整的答案/解决方案。

以下是您需要解决的一些初步问题。

  1. 这些语句是不必要的,应该删除:

    Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
    Class.forName("com.mysql.cj.jdbc.Driver");

    自从发布了适用于 MySQL 的 Java 6 和 JDBC 4.0 兼容驱动程序以来,就不再需要这样做了。大约是2007年!您需要使用DriverManager.getConnection

    为什么这很重要?那么,驱动程序类名取决于数据库和驱动程序版本。如果将驱动程序类名硬连接到代码中,则可能会破坏1。 (此外,不必要的 Class.forName 调用效率很低。)

  2. 您的代码未使用帐户名和密码。您将在没有帐户名和密码的情况下连接到数据库。根据 MySQL 访问控制的配置方式,这可能会导致它显示特定数据库不存在。 (可能......虽然我对此表示怀疑。)

  3. 您的代码未正确管理连接:

    • 您的 getConnection 调用 DriverManager.getConnection 并将结果分配给 connection
    • 然后它调用 createUserTable ...它再次调用 DriverManager.getConnection,并将其分配给同一个 connection 变量。
    • 然后 createUserTable 执行一些 SQL 并关闭连接
    • 因此,您的 getConnection 最终将返回已关闭的 Connection

    createUserTable 不应调用 DriverManager.getConnection,也不应关闭连接

  4. 在代码深处调用 System.exit 通常是一个坏主意。最好允许异常传播,以便更进一步的处理可以处理它。

<小时/>

1 - 这不是一个理论问题。 MySQL Connector/J 5.x 和 MySQL Connector/J 8.0 之间的驱动程序类名称确实发生了变化。

关于java.sql.SQLSyntaxErrorException : Unknown database 'userinfo' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60573604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com