SQLite GetString-指定的转换无效

时间:2018-11-19 19:39:12

标签: sqlite

我在手机游戏上使用SQLite已有数年,并且在生产中经常出现异常(无法在本地复制,或检查存在此问题的数据库),但我无法解决。数百个不同的参与者抛出了此异常,因此它可能不是数据库损坏的孤立情况。

该表只有两列:_id(int)和mycol(text),由以下命令创建:

CREATE TABLE mytable ( _id INTEGER PRIMARY KEY, mycol TEXT ) ;

当我尝试依次执行以下两个命令来读取表中的元素时,会导致异常:

A) DELETE FROM mytable WHERE mycol IS NULL OR trim(mycol) = '' ; 
B) SELECT mycol FROM mytable ORDER BY _id DESC ; 

然后崩溃在线了:

string myColValue = rs.GetString(0);

具有以下异常/堆栈跟踪:

InvalidCastException: Specified cast is not valid.
Mono.Data.Sqlite.SqliteDataReader.VerifyType (System.Int32 i, System.Data.DbType typ)
Mono.Data.Sqlite.SqliteDataReader.GetString (System.Int32 i)

请注意,上面的命令“ A”已经是我尝试“修复”问题,但是仍然崩溃。

我不知道还能尝试什么-哪种数据会导致该异常?如果它为null,则“ A”命令将避免它,如果它是任何其他类型的数据,则可以毫无问题地将其转换为字符串。

有什么想法吗?

一个相关的信息是我直到最近才使用的SQLite驱动程序/ dll是非常老的(从〜2013开始),所以也许那些崩溃的玩家是使用以下问题创建数据库和/或表的老玩家:这个较旧的DLL,也许数据库格式不再受支持了吗?如果是这样,那么有关如何检测到该位置的任何建议,以便我可以删除/重新创建表?

谢谢

0 个答案:

没有答案