我正在使用JavaDB和Derby来修改数据库。我试图用
创建一个视图statement.executeUpdate(SQLUpdate);
其中SQLUpdate
是用于创建视图的SQL命令的查询,但由于某种原因,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查询存储到String变量然后使用executeUpdate(myStringVariable);
答案 0 :(得分:1)
当你写这篇文章时,你似乎忘了初始化你的变量SQLUpdate
。声明之后,您应该在executeUpdate
方法中>>之前将其初始化为。因此,你得到了NPE。
你可以执行direclty你的查询:
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
。
Here's一个链接,显示了使用db进行基本操作的示例。
答案 1 :(得分:1)
当您尝试调用方法或引用对象为null的属性时,Java会抛出NullPointerException
(通常缩写为NPE)。
如上面的评论所述,您的statement
对象可能为空。或者,语句executeUpdate
方法中的某些内容可能会尝试以这种方式访问null
属性。
如果查看堆栈跟踪,它应该准确地告诉您产生错误的行,并帮助您诊断哪个对象为空。
答案 2 :(得分:0)
如果你只提到你提到的SQLUpdate
,那么它将具有默认值。 Java中对象属性的默认值为null
,导致NullPointerException
。您需要将SQL设置为SQLUpdate
属性才能使其正常工作。