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
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


--
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

Reply via email to