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 > >>>>>>> 11-29 12:07:28.894: WARN/System.err(956): at > >>>>>>> android.database.CursorWindow.getLong_native(Native Method) > >>>>>>> 11-29 12:07:28.904: WARN/System.err(956): at > >>>>>>> android.database.CursorWindow.getInt(CursorWindow.java:434) > >>>>>>> 11-29 12:07:28.925: WARN/System.err(956): at > >>>>>>> android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java: > >>>>>>> 93) > >>>>>>> 11-29 12:07:28.925: WARN/System.err(956): at > >>>>>>> com.monarch.home.AddRoom.checkRoomExist(AddRoom.java:110) > >>>>>>> 11-29 12:07:28.944: WARN/System.err(956): at > >>>>>>> com.monarch.home.AddRoom.insertToRoomTable(AddRoom.java:142) > >>>>>>> 11-29 12:07:28.954: WARN/System.err(956): at > >>>>>>> com.monarch.home.AddRoom$1.onItemClick(AddRoom.java:74) > >>>>>>> 11-29 12:07:28.966: WARN/System.err(956): at > >>>>>>> android.widget.AdapterView.performItemClick(AdapterView.java:284) > >>>>>>> 11-29 12:07:28.974: WARN/System.err(956): at > >>>>>>> android.widget.ListView.performItemClick(ListView.java:3285) > >>>>>>> 11-29 12:07:28.974: WARN/System.err(956): at > >>>>>>> android.widget.AbsListView$PerformClick.run(AbsListView.java:1640) > >>>>>>> 11-29 12:07:28.996: WARN/System.err(956): at > >>>>>>> android.os.Handler.handleCallback(Handler.java:587) > >>>>>>> 11-29 12:07:29.005: WARN/System.err(956): at > >>>>>>> android.os.Handler.dispatchMessage(Handler.java:92) > >>>>>>> 11-29 12:07:29.005: WARN/System.err(956): at > >>>>>>> android.os.Looper.loop(Looper.java:123) > >>>>>>> 11-29 12:07:29.013: WARN/System.err(956): at > >>>>>>> android.app.ActivityThread.main(ActivityThread.java:4363) > >>>>>>> 11-29 12:07:29.027: WARN/System.err(956): at > >>>>>>> java.lang.reflect.Method.invokeNative(Native Method) > >>>>>>> 11-29 12:07:29.035: WARN/System.err(956): at > >>>>>>> java.lang.reflect.Method.invoke(Method.java:521) > >>>>>>> 11-29 12:07:29.044: WARN/System.err(956): at > >>>>>>> com.android.internal.os.ZygoteInit > >>>>>>> $MethodAndArgsCaller.run(ZygoteInit.java:860) > >>>>>>> 11-29 12:07:29.053: WARN/System.err(956): at > >>>>>>> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) > >>>>>>> 11-29 12:07:29.053: WARN/System.err(956): at > >>>>>>> dalvik.system.NativeStart.main(Native Method) > >>>>> -- > >>>>> Kostya Vasilyev -- WiFi Manager + pretty widget > >>>>> --http://kmansoft.wordpress.com > >>> -- > >>> Kostya Vasilyev -- WiFi Manager + pretty widget > >>> --http://kmansoft.wordpress.com > > -- > Kostya Vasilyev -- WiFi Manager + pretty widget > --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

