The query not workin' is this one: "select word._id, word.word from word where length(word.word) between ? and ? " the first one (the count) responds with the correct number of rows. but the select to fetch the words does not. :/
On 19 oct, 18:27, Marco Nelissen <[email protected]> wrote: > On Mon, Oct 19, 2009 at 1:37 AM, Yayo <[email protected]> wrote: > > > The count(1) counts the appearances of the first column y all rows, it > > That's not how I interpret the Sqlite documentation, which says that > "count(X)" returns "a count of the number of times that X is not NULL > in a group". Since "X" is a constant in your case, it should simply > return a count of the number of rows, which makes it equivalent to > count(*) in this case. Not sure if that's what you actually want > though, since you could have done that without a compound query. > > > may be slower depending on the DB implementation (I think using Oracle > > the * may be faster). Wether if I use * or 1 there doesn't mind. That > > query works perfectly and returns the correct number of words. The > > second one is the one that's pissing me off. > > Which query are you referring to that works perfectly? You kinda have > two of them, since your doing a "select foo from (select bar)" type of > query. Did you try the entire compound query in the command line > sqlite3 command? > Also, what does cursor.getCount() return? If it returns 0, then > move(1) is expected to return false, since you have no rows in your > cursor. If it returns >0, then that might indicate a bug in > Cursor.move(). Try using moveToFirst() or moveToNext() instead. > > > > > On Oct 18, 8:07 pm, Marco Nelissen <[email protected]> wrote: > >> On Sun, Oct 18, 2009 at 7:50 AM, Yayo <[email protected]> wrote: > > >> > Hi all, > > >> > I've got this piece of code where I count words in a dictionary and > >> > then I try to query them: > > >> > String params[] = { Integer.toString(minlength), > >> > Integer.toString(maxlength) }; > >> > SQLiteStatement statement = database > >> > .compileStatement("select count (1) from > >> > (" + SELECT_BY_LENGTH > > >> Don't you want "count(*)" there? > > >> > + ")"); > >> > statement.bindLong(1, minlength); > >> > statement.bindLong(2, maxlength); > >> > // statement.execute(); > >> > int count = (int) statement.simpleQueryForLong(); > >> > statement.close(); > >> > Cursor cursor; > >> > cursor = database.rawQuery(SELECT_BY_LENGTH, params); > >> > if (cursor.move(1)) { > > >> > The SELECT_BY_LENGTH is defined this way: > >> > private static final String SELECT_BY_LENGTH = "select word._id, > >> > word.word from word where length(word.word) between ? and ? "; > > >> > And the count works perfectly but the cursor.move(1) always returns > >> > false. I've tried to get the column count and responds with the > >> > correct count and the column names map too. I mean that the method > >> > getColumnIndex works too but I can't get any data from the cursor. All > >> > such methods fail. Am I doin' something wrong?? > > >> If move(1) fails that means you were on the last row already, or in > >> this case that no rows were retrieved. I expect Cursor.getCount() will > >> return 0. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

