Can't speak for the effects - I've never ran into this myself.
One idea:
SQLiteStatement has methods to bind actual parameter types, including
bindDouble:
http://developer.android.com/reference/android/database/sqlite/SQLiteProgram.html#bindDouble(int,
double)
And here is an idea for an ugly hack, just for completeness:
If you don't need all the double-type precision there is, you could
pre-multiply your floating point numbers by some power of ten, turning
them into integers (I don't mean 32-bit integers, just that there is no
fractional part, or a fractional part you can discard). Then binding
them as strings should work - provided this is acceptable to your data
logic.
-- Kostya
23.02.2011 21:23, Nathan пишет:
I'm seeing this in my log.
02-23 09:50:09.293: WARN/Database(27780): Reached MAX size for
compiled-sql statement cache for database /mnt/sdcard/bcnav/data/
*****.**; i.e., NO space for this sql statement in cache:
"***************************"
Please change your sql statements to use '?' for bindargs, instead of
using actual values
I would absolute *love* to do parameterized queries, but there is the
following problem:
IT WON'T WORK.It is absolutely useless for floating point
inequalities, as I've posted here last year. You can do the same query
with parameters and string concatenation and get a different answer.
The answer with the parameterized query is just plain wrong, because
the FLOAT column is cast to a string. This is likely not even
considered a bug because the documentation states 'The values will be
bound as Strings.'
Given this situation, what do I do?
Can I prevent this error? Given that under these conditions, a
statement cache is useless anyway, can I stop it from adding to that
cache?
And what adverse affects should I expect with this warning? It hasn't
appeared to crash so far, but it probably isn't good. If I do have any
sql statements that are eligible for caching, there probably won't be
any room left.
Nathan
--
Kostya Vasilyev -- http://kmansoft.wordpress.com
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en