我的一个Android应用程序的执行下列具体SQLite的查询:的Android SQLiteException:没有这样的列:-1
SELECT _id, hourMin, actions FROM profiles
WHERE type=2 AND hourMin > -1 AND days & 8 != 0 AND prof_id >> 16 IN (256)
ORDER BY hourMin ASC LIMIT 1
现在,在一些Android手机的工作原理,但他们几个人将其与下面的崩溃错误:
android.database.sqlite.SQLiteException: no such column: -1: , while
compiling: SELECT _id, hourMin, actions FROM profiles WHERE type=2 AND
hourMin > -1 AND days & 8 != 0 AND prof_id >> 16 IN (256) ORDER BY hourMin
ASC LIMIT 1
出于某种原因,“-1”被视为列,而不是数量......这没有多大意义,当我阅读SQLite的查询语言,我认为没有必要逃跑这个数字在括号里。它可能是一个不同版本的SQLite的问题?添加括号可以帮助吗?相反,我可能会用> = 0来重写它,但我仍然想知道发生了什么。
尝试将它包装在圆括号中,看看它是否有帮助。在声明中分组可能是一个问题或其他问题。如果我是你,我会找出每部手机上的sqlite版本号,这样你就有了一个比较点。 – avpx 2010-01-01 19:05:53
是的,这是我会做的,但它是一个随机拍摄。我喜欢了解我的修复:-) 不幸的是,我从用户那里得到了一些报告,我自己无法访问这些电话。实际上,用户甚至很难猜测他们的手机具有哪种SQLite版本。真的不能要求他们在他们的手机上设置ADB,在他们的桌面上安装SDK,通过USB连接他们的手机并运行一些神秘的命令行... :-) – ralfoide 2010-01-01 20:40:30
我不知道哪些版本的SQLite甚至可能在Android上运行,所以我不会冒这个评论。但是我从变更日志中看到,按位运算符并不总是存在。如果语法分析器不能识别语句中的按位运算符,那么很容易想象这种特定的错误。另外,〜的优先级在3.5.3中被固定。再次,我不知道,但我可以想象,与〜的优先错误也会以否定的形式存在(不太可能,但不是完全没有问题)。 – 2010-01-01 23:45:11