gpt4 book ai didi

java - JDBC – create 语句中出现空指针异常

转载 作者:行者123 更新时间:2023-12-01 17:11:13 25 4
gpt4 key购买 nike

我正在尝试在数据库中为全年的每个月生成一组表。我有一个名为“DBConnection.java”的单独类,我在其中从遵循 XML 格式的配置文件中获取 jdbcServerType、用户名、密码、serverPort 以及应在其中创建表的数据库名称等详细信息通过一个名为 RootTagsConfigList 的类对其进行处理。在此之下,我进行了验证以检查数据库是否存在,如果不存在,请在继续创建表之前创建数据库。在调试 session 期间,我可以看到我的配置文件正在被完美读取,并且上述所有值在从 RootTagsConfigList 读取后都存储在相应的变量中。

public DBConnection(RootTagsConfigList rootTagsConfigListObj) {

try {
String jdbcServerType = rootTagsConfigListObj.getRootTagsConfigList().get(0).getJDBCServerType();
String userName = rootTagsConfigListObj.getRootTagsConfigList().get(0).getUsername();
String password = rootTagsConfigListObj.getRootTagsConfigList().get(0).getPassword();
String dbserver = rootTagsConfigListObj.getRootTagsConfigList().get(0).getDbserver();
String serverPort = rootTagsConfigListObj.getRootTagsConfigList().get(0).getServerPort();
database = rootTagsConfigListObj.getRootTagsConfigList().get(0).getDatabaseName();


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

create.execute("CREATE SCHEMA IF NOT EXISTS " +database);
String url = "jdbc:" + jdbcServerType + "://" + dbserver + ":" + serverPort + "/" + database;
conn = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
e.printStackTrace();
}

}

几天前我的代码运行良好,我能够生成一年的整个表格。然而,今天我运行我的代码并在 create 语句中捕获了空指针异常。在调试过程中,每次遇到create.execute时,程序都会出现异常。我尝试打印 StackTrace 并得到以下结果,

位于program.main.DBConnection。(DBConnection.java:40) 在program.Main.main(Main.java:64)

当我追溯到Main:64时,它指向我dbConnectionObj,它应该将我的所有数据存储为空。然后我转到 DBConnection:40 (上面代码中具有 create.execute 的行),它指向我的 create.execute 语句,该语句也是空的。或者,我尝试将 sql 语句分配给变量并打印查询,该查询打印了要正确执行的 sql 语句,但在这种情况下,当它遇到 create.execute 时,它​​再次抛出空指针异常。

下面是我的 Main:64 代码(其中 dbConnectionObj 似乎为空)

try {
Statement create = null;

new ReadXMLConfig();

RootTagsConfigList rootTagsConfigListObj = new RootTagsConfigList();

dbConnectionObj = new DBConnection(rootTagsConfigListObj);

String tableAction = rootTagsConfigListObj.getRootTagsConfigList().get(0).getTableAction();
String deleteProgramId = rootTagsConfigListObj.getRootTagsConfigList().get(0).getDeleteProgramId();
String createForTheYear = rootTagsConfigListObj.getRootTagsConfigList().get(0).getcreateForTheYear();
String strStartDate = rootTagsConfigListObj.getRootTagsConfigList().get(0).getStartDateTime();
String strEndDate = rootTagsConfigListObj.getRootTagsConfigList().get(0).getEndDateTime();

在上面的代码中,我的所有变量都被完美地读取并存储在各自的变量中。我很惊讶代码在以前工作正常并且我没有进行任何更改的情况下如何会向我抛出错误,但我我真的很想知道我哪里出错了,因为我主要用 python 编写代码,而且对 Java 还不太熟悉。

如果我没有充分解释我的问题,请告诉我是否需要任何其他信息。如有任何帮助,我们将不胜感激!

提前致谢!

最佳答案

首先建立连接,然后在构造函数DBConnection中执行语句。

    String url = "jdbc:" + jdbcServerType + "://" + dbserver + ":" + serverPort + "//" + database;
conn = DriverManager.getConnection(url, userName, password);
//I guess create is Object of Statement
Statement create= conn.createStatement();
create.execute("CREATE SCHEMA IF NOT EXISTS " +database);

关于java - JDBC – create 语句中出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735509/

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