Ohh Kostya Thank you very much for your precious time. I will first look tutorial and then try to fix the problem. Once again Thank you.
On Nov 29, 4:14 pm, Kostya Vasilyev <[email protected]> wrote: > If you want a separate suffix sequence for each room name (if I > understand you correctly), change your query for MAX_SUFFIX to filter by > room name. > > SELECT MAX(RoomSuffix) FROM ROOM_TABLE_NAME WHERE RoomName = <room name > here> > > I recommend you read through a SQL tutorial of some sorts. Here is one: > > http://www.sqltutorial.org/ > > -- Kostya > > 29.11.2010 14:02, pramod.deore пишет: > > > You are right Kpstya after chenging to suf = > > c4.getInt(c4.getColumnIndex("MAX_SUFFIX"))+1; It solve my partial > > problem . But Now here is new issue arrise which is I also faced when > > I user SharedPreference. > > > Now the problem is > > > If I have data like > > 1 Hall 0 > > 2 Hall 1 > > 3 Kitchen 0 > > 4. kitchen 2 > > 5. Hall 3 > > > Here what I want > > > 1 Hall 0 > > 2 Hall 1 > > 3 Kitchen 0 > > 4. kitchen 1 > > 5. Hall 2 > > > On Nov 29, 3:42 pm, Kostya Vasilyev<[email protected]> wrote: > >> Your code never gets the actual value for MAX_SUFFIX. > > >> You're calling getColumnIndex, but never - getInt. > > >> I see you tried to fix it by doing "+1" on the value - that's a pretty > >> good tip-off that you are doing something wrong. > > >> -- Kostya > > >> 29.11.2010 13:33, pramod.deore пишет: > > >>> Hi, But there is a problem . getColumnIndex("MAX_SUFFIX") doesn't > >>> return the highest integer. > >>> Here is in short what I am doing:- > >>> I have at table which have 3 columns:1. RoomId, 2. RoomaName 3. > >>> RoomSuffix > >>> If suppose in database there are following data > >>> RoomID RoomName > >>> 1 Hall > >>> 2 Kitchen > >>> and suppose user again add Hall then in that case RoomSuffix must have > >>> to increase by 1. > >>> RoomID RoomName RoomSuffix > >>> 1 Hall 0 > >>> 2 Kitchen 0 > >>> 3 Hall 1 > >>> 4 Hall 2 > >>> Here I had created a table as > >>> public void insertToRoomTable(String roomName) > >>> { > >>> try > >>> { > >>> sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + > >>> ROOM_TABLE_NAME + > >>> " (RoomID integer primary key > >>> autoincrement,RoomName VARCHAR,RoomSuffix integer);"); > >>> boolean roomExist = checkRoomExist(roomName); > >>> System.out.println ("!...@#!@#...@#!@#"+roomExist); > >>> System.out.println ("Here value of suf" +suf); > >>> sampleDB.execSQL("INSERT INTO " + > >>> ROOM_TABLE_NAME + > >>> " Values > >>> (null,'"+roomName+"','"+suf+"');"); > >>> } > >>> catch (Exception e) > >>> { > >>> e.printStackTrace(); > >>> } > >>> } > >>> public boolean checkRoomExist(String name) > >>> { > >>> Cursor c = sampleDB.rawQuery("SELECT RoomName FROM " > >>> +ROOM_TABLE_NAME , null); > >>> if (c != null ) > >>> { > >>> System.out.println ("%%%%%%%%%%%"+c.getCount()); > >>> if (c.moveToFirst()) > >>> { > >>> do > >>> { > >>> rname = > >>> c.getString(c.getColumnIndex("RoomName")); > >>> System.out.println ("name is "+name); > >>> System.out.println ("name is "+rname); > >>> if (name.equalsIgnoreCase(rname)) > >>> { > >>> System.out.println ("Room > >>> already exist"); > >>> //String str = "select > >>> max(RoomSuffix) from RoomTable"; > >>> Cursor c4 = > >>> sampleDB.rawQuery("SELECT MAX(RoomSuffix) AS > >>> MAX_SUFFIX FROM RoomTable",null); > >>> if (c4 != null ) > >>> { > >>> if (c4.moveToFirst()) > >>> { > >>> do > >>> { > >>> > >>> System.out.println ("***********************"); > >>> > >>> System.out.println > >>> (c4.getColumnIndex("MAX_SUFFIX")); > >>> suf = > >>> c4.getColumnIndex("MAX_SUFFIX")+1; > >>> > >>> System.out.println ("!!!!!!!!!!!!"+suf); > >>> } > >>> while > >>> (c4.moveToNext()); > >>> return true; > >>> } > >>> } > >>> } > >>> } > >>> while (c.moveToNext()); > >>> } > >>> } > >>> c.close(); > >>> return false; > >>> } > >>> But here is problem is that If there is a record say like > >>> 1 Hall 0 > >>> 2 Hall 1 > >>> Upto this ok, But when add another record for Hall then also it enter > >>> it as > >>> 3 Hall 1 > >>> Means every time > >>> Cursor c4 = sampleDB.rawQuery("SELECT MAX(RoomSuffix) AS MAX_SUFFIX > >>> FROM RoomTable",null); > >>> if (c4 != null ) > >>> { > >>> if (c4.moveToFirst()) > >>> { > >>> do > >>> { > >>> > >>> System.out.println ("***********************"); > >>> > >>> System.out.println > >>> (c4.getColumnIndex("MAX_SUFFIX")); > >>> suf = > >>> c4.getColumnIndex("MAX_SUFFIX")+1; > >>> //Here it > >>> always returns 0. > >>> > >>> System.out.println ("!!!!!!!!!!!!"+suf); > >>> } > >>> while > >>> (c4.moveToNext()); > >>> return true; > >>> } > >>> } > >>> Value of suf = 0. > >>> On Nov 29, 3:15 pm, "pramod.deore"<[email protected]> wrote: > >>>> This one_ > >>>> - Rewrite the query as "SELECT MAX(RoomSuffix) AS MAX_SUFFIX FROM > >>>> RoomTable" > >>>> This assigns a known column name (MAX_SUFFIX) to the expression. > >>>> You then can call getColumnIndex("MAX_SUFFIX"). > >>>> On Nov 29, 2:28 pm, Kostya Vasilyev<[email protected]> wrote: > >>>>> Just curious - which of the three possible fixes did you apply? > >>>>> 29.11.2010 12:17, pramod.deore пишет: > >>>>>> Thanks Kostya . It works > >>>>>> On Nov 29, 1:36 pm, Kostya Vasilyev<[email protected]> wrote: > >>>>>>> That's because your query has an expression, max(RoomSuffix). > >>>>>>> The result (cursor) also uses that expression as the column name, and > >>>>>>> not just "RoomSuffix". > >>>>>>> You could do one of the following to fix this: > >>>>>>> - Call c.getInt(1) without c.getColumnIndex, since you know there is > >>>>>>> only one column. > >>>>>>> - Rewrite the query as "SELECT MAX(RoomSuffix) AS MAX_SUFFIX FROM > >>>>>>> RoomTable" > >>>>>>> This assigns a known column name (MAX_SUFFIX) to the expression. > >>>>>>> You then can call getColumnIndex("MAX_SUFFIX"). > >>>>>>> - Use SQLiteStatement.simpleQueryForLong with your query: > >>>>>>>> public long simpleQueryForLong () > >>>>>>>> Since: API Level 1 > >>>>>>>> Execute a statement that returns a 1 by 1 table with a numeric value. > >>>>>>>> For example, SELECT COUNT(*) FROM table; > >>>>>>>> Returns > >>>>>>>> The result of the query. > >>>>>>> -- Kostya > >>>>>>> 29.11.2010 11:15, pramod.deore пишет: > >>>>>>>> Why I am getting this exception? RoomSuffix is an int. Then why I got > >>>>>>>> error when I execute > >>>>>>>> suf = c45.getInt(c45.getColumnIndex("RoomSuffix")); > >>>>>>>> Thanks > >>>>>>>> On Nov 29, 11:55 am, "pramod.deore"<[email protected]> > >>>>>>>> wrote: > >>>>>>>>> Hi, I want to retrieve int value from cursor > >>>>>>>>> Cursor c = sampleDB.rawQuery("select max(RoomSuffix)from > >>>>>>>>> RoomTable",null); > >>>>>>>>> and here RoomSuffix is an int, but when I tried to retrieve value as > >>>>>>>>> if (c != null ) > >>>>>>>>> { > >>>>>>>>> if (c.moveToFirst()) > >>>>>>>>> { > >>>>>>>>> do > >>>>>>>>> { > >>>>>>>>> > >>>>>>>>> System.out.println ("Inside do"); > >>>>>>>>> > >>>>>>>>> System.out.println (c.getColumnCount()); //here i > >>>>>>>>> get 1 > >>>>>>>>> suf = > >>>>>>>>> c.getInt(c.getColumnIndex("RoomSuffix"));// > >>>>>>>>> here it throws Exception > >>>>>>>>> } > >>>>>>>>> while > >>>>>>>>> (c.moveToNext()); > >>>>>>>>> } > >>>>>>>>> } > >>>>>>>>> and logcat output is > >>>>>>>>> 11-29 12:07:28.835: ERROR/CursorWindow(956): Bad request for field > >>>>>>>>> slot 0,-1. numRows = 1, numColumns = 1 > >>>>>>>>> 11-29 12:07:28.843: WARN/System.err(956): > >>>>>>>>> java.lang.IllegalStateException: get field slot from row 0 col -1 > >>>>>>>>> failed > > ... > > read more » -- 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

