Java 无法打开SQLITE数据库?
我正在尝试为一家小型企业编写一个数据库来处理预订,它是使用棒棒糖的21API编写的,我在下面包含了DBAdapter和createreservation类。当我尝试点击Submit时,我得到了这个错误(StackOverflow不会让我发布整个错误,但这里有一些错误-->Java 无法打开SQLITE数据库?,java,android,android-5.0-lollipop,Java,Android,Android 5.0 Lollipop,我正在尝试为一家小型企业编写一个数据库来处理预订,它是使用棒棒糖的21API编写的,我在下面包含了DBAdapter和createreservation类。当我尝试点击Submit时,我得到了这个错误(StackOverflow不会让我发布整个错误,但这里有一些错误-->是由以下原因引起的:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.database.sqlite.SQLiteDatabase android.database.s
是由以下原因引起的:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.database.sqlite.SQLiteDatabase android.database.sqlite.SQLiteOpenHelper.getWritableDatabase()”
net.stein13.reserveit.DBAdapter.open(DBAdapter.java:53)
位于net.stein13.reserveit.NewReservation.submitReservation(NewReservation.java:29)
我正试图和我的美联社计算机科学老师一起解决这个问题,但她对安卓的了解不够,无法帮助我解决这个问题
新预订类别-
DBAdapter类-
任何帮助都将不胜感激!!提前感谢!发生此错误是因为您从未初始化
DBHelper
成员变量。但是,由于DBAdapter
扩展了SQLiteOpenHelper
,因此根本不需要DBHelper
。这是因为每个DBAdapter
都是SQLiteOpenHelper
。这意味着您可以直接在任何DBAdapter
上调用所有SQLiteOpenHelper
方法。例如,您应该将open()
方法更改为
db = getWritableDatabase();
您还应该完全删除您的
close()
SQLiteOpenHelper
已经有一个close())
方法,该方法为您完成所有工作。您确定粘贴箱与您正在编译和运行的代码相同吗?错误消息中的行号根本不匹配。是的,我确定,我直接从上次编译的代码中获取了该代码-错误来自于我在AVD上运行它并单击SubmitNote时,注意e错误消息告诉您NPE发生在DBAdapter.java
的第53行(如果您在IDE中单击这一行,它将直接跳到有问题的代码行)但是,在pastebin中,这一行是空白的。似乎您在编译和运行应用程序与创建pastebin之间插入了一行空白。请以后小心,因为这可能会造成很多混乱。非常感谢!这很好地解决了它,现在我只需解决一些小问题,但是现在确实有一个数据库了!:)