0

我正在使用 JavaDB 和 Derby 来修改数据库。我试图用

statement.executeUpdate(SQLUpdate);

用于创建视图的 SQL 命令的查询在哪里SQLUpdate,但由于某种原因,Java 会在 SQLUpdate 上抛出 NullPointerException,即使我已经这样声明它:private String SQLUpdate;。//我首先尝试将其声明为局部变量,但随后将其声明为可用于整个类的私有变量。如果这是 C++,我会做这项工作,但鉴于这是 Java,我无权访问指针业务。

有人可以诊断一下为什么 Java 可能会抛出 NullPointerException 吗?//我已经阅读了这里的文档:http: //docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate%28java.lang.String%29(查找executeUpdate()),但是它没有说明将您的 SQL 查询存储到字符串变量然后使用executeUpdate(myStringVariable);

4

3 回答 3

1

在您编写它时,您似乎忘记了初始化您的变量SQLUpdate。在声明它之后,您应该在方法中使用它之前对其进行初始化executeUpdate。因此,您获得了 NPE。

您可以像这样直接执行您的查询:

s.executeUpdate("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('RICH', 123)");

或者,如果您创建了一个像您这样的变量:

private String SQLUpdate;

//in your code/method/etc..
SQLUpdate = "INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('RICH', 123)";
s.executeUpdate(SQLUpdate);

您的statement对象也可能是null. 这是一个链接,它显示了一个使用 db 执行基本操作的示例。

于 2013-05-22T21:00:26.353 回答
1

NullPointerException当您尝试调用方法或引用空对象的属性时,Java 抛出(通常缩写为 NPE)。

如上述评论中所述,您的statement对象可能为空。或者,语句executeUpdate方法内部的某些东西可能试图以null这种方式访问​​属性。

如果您查看堆栈跟踪,它应该会准确地告诉您哪一行产生了错误,这有助于您诊断哪个对象为空。

于 2013-05-22T21:03:43.060 回答
0

如果您只SQLUpdate按照您提到的方式声明,它将具有默认值。Java 中对象属性的默认值是null,这会导致NullPointerException. 您需要将 SQL 设置为SQLUpdate属性以使其工作。

于 2013-05-22T21:00:17.597 回答