Wednesday 14 December 2011

Internal Database Example

TestDemoActivity.java



package com.android.testdemo;

import android.app.Activity;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class TestDemoActivity extends Activity {
private Cursor mCountryCur;
CountryTable conTable;
private StateTable stateTable;
private Cursor mStateCur;
private CityTable cityTable;
private Cursor mCityCur;

private static final String STATE="STATE";
private static final String COUNTRY="COUNTRY";
private static final String CITY="CITY";

private static int backCount=0;

private static String Current=STATE;

private Spinner spnrCountry,spnrState;
private ListView lstCity;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spnrCountry=(Spinner)findViewById(R.id.spnrCountry);
spnrState=(Spinner)findViewById(R.id.spnrState);
lstCity=(ListView)findViewById(R.id.lstCity);
fillCountryList();


spnrCountry.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(TestDemoActivity.this,"List position: "+arg2,Toast.LENGTH_SHORT).show();
fillStateList(arg2+1);

if(lstCity.getChildCount()>1){
lstCity.removeAllViews();
}
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {


}
});

spnrState.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
fillCityList(arg2+1);

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
Toast.makeText(TestDemoActivity.this,"Nothing",Toast.LENGTH_SHORT).show();

}
});

}

private void fillCountryList() {
fetchCountryData();
String[] from = new String[] { CountryTable.COUNTRY_NAME };
int[] to = new int[] {android.R.id.text1};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, mCountryCur, from, to);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnrCountry.setAdapter(adapter);
Current=COUNTRY;
}

private void fillStateList(int pos) {
fetchStateData(pos);
String[] from = new String[] { StateTable.STATE_NAME,StateTable._ID };
int[] to = new int[] {android.R.id.text1,};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, mStateCur, from, to);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnrState.setAdapter(adapter);
Current=STATE;
backCount=0;
}

private void fillCityList(int pos) {
fetchCityData(pos);
String[] from = new String[] { CityTable.CITY_NAME };
int[] to = new int[] { android.R.id.text1 };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, mCityCur, from, to);
lstCity.setAdapter(adapter);
}

public void fetchCountryData() {
try {
conTable = new CountryTable(this);
/*conTable.DeleteAllData();
conTable.insert(1, "India");
conTable.insert(2, "U.S.A");
conTable.insert(3, "China");*/

mCountryCur = conTable.fetAllData();
for (int i = 0; i < mCountryCur.getCount(); i++) {
mCountryCur.moveToPosition(i);
Log.i("TEST",
"Country: "
+ mCountryCur.getString(mCountryCur
.getColumnIndex(CountryTable._ID))
+ " : "
+ mCountryCur.getString(mCountryCur
.getColumnIndex(CountryTable.COUNTRY_NAME)));
}
} catch (Exception e) {
e.printStackTrace();
}
}

public void fetchStateData(int pos) {
try {

stateTable = new StateTable(this);
stateTable.DeleteAllData();
stateTable.insert(1, "Gujarat", 1);
stateTable.insert(2, "Maharashtra", 1);
stateTable.insert(3, "Rajasthan", 1);

mStateCur = stateTable.fetchData(pos);
startManagingCursor(mStateCur);
for (int i = 0; i < mStateCur.getCount(); i++) {
mStateCur.moveToPosition(i);
Log.i("TEST",
"state: "
+ mStateCur.getString(mStateCur
.getColumnIndex(StateTable._ID))
+ " : "
+ mStateCur.getString(mStateCur
.getColumnIndex(StateTable.STATE_NAME)));
}
} catch (Exception e) {
e.printStackTrace();
}
}

public void fetchCityData(int pos) {
try {
cityTable = new CityTable(this);
//cityTable.DeleteAllData();
cityTable.insert(10, "Udaipur", 3);
cityTable.insert(11, "Jaipur", 3);
cityTable.insert(12, "Vilasa", 3);

mCityCur = cityTable.fetchData(pos);
startManagingCursor(mCityCur);
for (int i = 0; i < mCityCur.getCount(); i++) {
mCityCur.moveToPosition(i);
Log.i("TEST",
"City: "
+ mCityCur.getString(mCityCur
.getColumnIndex(CountryTable._ID))
+ " : "
+ mCityCur.getString(mCityCur
.getColumnIndex(CityTable.CITY_NAME)));
}
} catch (Exception e) {
e.printStackTrace();
}
}

/*@Override
protected void onListItemClick(ListView l, View v, int pos, long id) {
if(Current.equals(COUNTRY)){
fillStateList(pos+1);
}else if(Current.equals(STATE)){
fillCityList(pos+1);
}else if(Current.equals(CITY)){
//fillCityList();
}

Toast.makeText(this,"List position: "+pos,Toast.LENGTH_SHORT).show();
super.onListItemClick(l, v, pos, id);
}*/

@Override
public void onBackPressed(){
finish();

}
}


CountryTable.java



package com.android.testdemo;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class CountryTable extends SQLiteOpenHelper {
public static final String DATABASE_NAME="testdemo8";
public static final String TABLE_NAME="country3";

public static final String _ID="_id";
public static final String COUNTRY_NAME="Name";

private SQLiteDatabase mDb;

private static final String CREATE_TABLE="create table if not exists "+TABLE_NAME+" ("+_ID +" integer primary key,"+COUNTRY_NAME +" text)";

public CountryTable(Context context) {
super(context, DATABASE_NAME, null, 1);

}

@Override
public void onCreate(SQLiteDatabase db) {
try{
db.execSQL(CREATE_TABLE);
}catch (Exception e) {
e.printStackTrace();
}

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

public void insert(int id,String name){
try{
mDb=getWritableDatabase();
ContentValues val= new ContentValues();
val.put(_ID, id);
val.put(COUNTRY_NAME, name);
mDb.insert(TABLE_NAME, null, val);
}catch (Exception e) {
e.printStackTrace();

// TODO: handle exception
}finally{
mDb.close();

}
}

public Cursor fetAllData(){
Cursor c=null;
try{
mDb=getReadableDatabase();
String query = "select * from "+ TABLE_NAME;
//c=mDb.query(TABLE_NAME, new String[]{_ID,COUNTRY_NAME},null, null,null,null,null);
c=mDb.rawQuery(query, null);


}catch (Exception e) {
e.printStackTrace();
}finally{
// mDb.close();
}
return c;
}

public void DeleteAllData(){

try{
mDb=getReadableDatabase();
String query = "delete  from "+ TABLE_NAME;
mDb.execSQL(query);

}catch (Exception e) {
e.printStackTrace();
}finally{

}

}

}


StateTable.java


package com.android.testdemo;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class StateTable extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "testdemo10";
public static final String TABLE_NAME = "State2";

public static final String _ID = "_id";
public static final String STATE_NAME = "Name";
public static final String COUNTRY_ID = "CountryId";

private SQLiteDatabase mDb;

private static final String CREATE_TABLE = "create table if not exists "
+ TABLE_NAME + " (" + _ID + " integer primary key,"
+ STATE_NAME + " text," + COUNTRY_ID + " INTEGER)";

public StateTable(Context context) {
super(context, DATABASE_NAME, null, 1);

}

@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (Exception e) {
e.printStackTrace();
}

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

public void insert(int id,String name, int Con_id) {
try {
mDb = getWritableDatabase();
ContentValues val = new ContentValues();
val.put(_ID, id);
val.put(STATE_NAME, name);
val.put(COUNTRY_ID, Con_id);
long i=mDb.insert(TABLE_NAME, null, val);
} catch (Exception e) {
e.printStackTrace();

// TODO: handle exception
} finally {
mDb.close();

}
}

public Cursor fetchData(int conid) {
Cursor c = null;
try {
mDb = getReadableDatabase();
String query = "select * from " + TABLE_NAME + " where "
+ COUNTRY_ID + " = " + conid;
c = mDb.rawQuery(query, null);
c.moveToFirst();

} catch (Exception e) {
e.printStackTrace();
} finally {
mDb.close();
}
return c;
}

public void DeleteAllData() {

try {
mDb = getReadableDatabase();
String query = "delete  from " + TABLE_NAME;
mDb.execSQL(query);

} catch (Exception e) {
e.printStackTrace();
} finally {

}

}

}


CityTable.java


package com.android.testdemo;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class CityTable extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "testdemo11";
public static final String TABLE_NAME = "City2";

public static final String _ID = "_id";
public static final String CITY_NAME = "Name";
public static final String STATE_ID = "StateId";

private SQLiteDatabase mDb;

private static final String CREATE_TABLE = "create table if not exists "
+ TABLE_NAME + " (" + _ID + " integer primary key,"
+ CITY_NAME + " text," + STATE_ID + " INTEGER)";

public CityTable(Context context) {
super(context, DATABASE_NAME, null, 1);

}

@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (Exception e) {
e.printStackTrace();
}

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

public void insert(int id,String name, int Con_id) {
try {
mDb = getWritableDatabase();
ContentValues val = new ContentValues();
val.put(_ID, id);
val.put(CITY_NAME, name);
val.put(STATE_ID, Con_id);
mDb.insert(TABLE_NAME, null, val);
} catch (Exception e) {
e.printStackTrace();

// TODO: handle exception
} finally {
mDb.close();

}
}

public Cursor fetchData(int conid) {
Cursor c = null;
try {
mDb = getReadableDatabase();
String query = "select * from " + TABLE_NAME + " where "
+ STATE_ID + " = " + conid;
c = mDb.rawQuery(query, null);
c.moveToFirst();
} catch (Exception e) {
e.printStackTrace();
} finally {
mDb.close();
}
return c;
}

public void DeleteAllData() {

try {
mDb = getReadableDatabase();
String query = "delete  from " + TABLE_NAME;
mDb.execSQL(query);

} catch (Exception e) {
e.printStackTrace();
} finally {

}

}

}


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <Spinner
        android:id="@+id/spnrCountry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
     <Spinner
        android:id="@+id/spnrState"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    
 <ListView
        android:id="@+id/lstCity"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>




1 comment: