当前位置: 首页 > 知识库问答 >
问题:

代码名1和SQLite错误

魏澄邈
2023-03-14

我已经使用CN1编写了一个访问sqlite数据库的应用程序。当我使用Netbeans在模拟器中运行应用程序时,它工作得非常好。然而,当我试图连接到实际设备上的db时,我得到了这个错误。。。

java,lang,NullPointerException: Attempt to invoke virtual method 'void.com.codename1.db.Database.close()' on a null object reference

在我创建DB实例之前,我已经通过我的代码尝试查看我是否正在执行“关闭”操作,但我看不到它-如果我正在执行此操作,那么我希望它在模拟器中失败,对吗?

谢谢你的帮助

谢啦

共有2个答案

林俊英
2023-03-14

在YouTube教程之后,我使用“adb”命令找到了问题的原因:https://www.youtube.com/watch?v=3wMlCucwGvE

当我按照这些说明操作时,我可以看到以下输出

10-27 08:14:12.580  3967  3986 E SQLiteDatabase: Failed to open database '/databases/MyDB.db'.

10-27 08:14:12.580  3967  3986 E SQLiteDatabase: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1294): Could not open database

10-27 08:14:12.580  3967  3986 E SQLiteDatabase: #################################################################

10-27 08:14:12.580  3967  3986 E SQLiteDatabase: Error Code : 1294 (SQLITE_CANTOPEN_ENOENT)

10-27 08:14:12.580  3967  3986 E SQLiteDatabase: Caused By : Specified directory or database file does not exist.

10-27 08:14:12.580  3967  3986 E SQLiteDatabase:    (unknown error (code 1294): Could not open database)

10-27 08:14:12.580  3967  3986 E SQLiteDatabase:        #################################################################

因此,这个输出和我最初的错误消息一起告诉我,我试图在打开数据库之前关闭它。

所以这在我心中引发了两个问题:

1] 为什么它能在模拟器中完美工作?

2]在尝试关闭数据库之前,是否需要检查数据库是否打开?

东方俊杰
2023-03-14

在代码中,您可以执行以下操作:

dbPath = Display.getInstance().getDatabasePath("MyDB.db");
if(dbPath != null && !FileSystemStorage.getInstance().exists(dbPath)) {
        copyDb(dbPath);
    }
}

然后你会:

db = Display.getInstance().openOrCreate(dbPath);

这是一个错误,我有点惊讶这在模拟器中工作。您需要使用:

db = Display.getInstance().openOrCreate("MyDB.db");

原始答复如下:

如果您用电缆连接Android设备并查看DDM,您应该能够看到错误的完整堆栈跟踪,该跟踪将指向失败的特定代码行。

请注意,在这种情况下,无需安装DDMS或电缆,也可以使用碰撞保护。

 类似资料:
  • 我正在使用SQLiteHelper创建一个数据库,当应用程序尝试运行时,我不断收到异常。 这是我收到的错误消息:引起原因:android.database.sqlite.SQLiteExcture:附近"Trip":语法错误(代码1):,而编译:创建表商务旅行支出(desc文本主键,餐整数不为空,饮料整数不为空,旅行整数不为空,住宿整数不为空,其他整数不为空,Receipt_Retained?Re

  • 我正在为我的公司调查可能的跨平台解决方案,我现在正在尝试代号为One的解决方案。我真的很喜欢它,但今天我创建了一个hello world项目,当我尝试构建服务器时,我得到了一个错误。我还尝试了iOS版本,我得到了同样的错误。下面是我得到的异常: 这是我在build.xmlAndroid设置: 我认为这可能是不相关的,因为它是一个我不关心的构建,并且可能不会被解析,但在我的windows部分buil

  • 我试图在codenameone中构建一个示例,当我试图生成ios构建时,我在codenameone构建服务器下的构建中得到了像"构建错误"这样的错误。 这是我得到的错误日志 如果有人对此有想法,请帮助我... 对不起,我的英语很差。。 提前谢谢。。

  • 我遇到了一个奇怪的问题。我正在查询数据库表中的单词列表,并能够获得该列表。但是我无法更新该表。奇怪的是,logcat显示Code 14错误。我卸载了应用程序,重新运行它,所以数据库是新复制的,但是什么都没有改变。 以下是dbHandler代码: } 这是服务代码: 字符串兽医显示在烤面包中,我可以看到表格第一列中的所有单词。但是我无法更新行。 我已经给了它存储权限,并对其进行了双重检查。 清单文件

  • 当试图通过Sonarqube连接到LDAP时,我遇到了以下错误: 2016.09.13 09:35:16调试Web[O.S.P.L.LDAPUsersProvider]用户sonartester在2016年找不到。09.13 09:35:16错误Web[O.S.S.A.RealMauthEnticator]身份验证过程中错误org.sonar.api.utils.SonareXception:无法

  • 我有一个基本的Codename One订阅,从我的角度来看,我的代码编译得很好,模拟器也工作得很好,但是Codename One Server正在获得构建错误,我尝试了几次但仍然不工作,有构建错误日志,但在这里发布太长了,我该怎么办?