Thursday 15 August 2013

Database for Android

1)DBAdapter

package com.BabyName.DB;


import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBAdapter {

private  final String DATABASE_NAME = "weed.sqlite";

private  final int DATABASE_VERSION = 1;
private  Context context;
private DatabaseHelper DBHelper;
//private static SQLiteDatabase db;
public DBAdapter(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
public  class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public void onCreate(SQLiteDatabase db) {
// db.execSQL(DATABASE_CREATE);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//onCreate(db);
}
}
// ---opens the database---
@SuppressWarnings("unused")
public DBAdapter open() throws SQLException {
SQLiteDatabase db = DBHelper.getWritableDatabase();
return this;
}
// ---closes the database---
public void close() {
DBHelper.close();
}
}

2) Define String

package com.BabyName.DB;

public class in {
public  String babyid="";
public  String babygender="";
public  String babyname="";
public  String meaning="";
public  String descr="";
public  String castid="";
public  String religionid="";
public  String languageid="";
public  String rashiid="";
public  int isfav=0;


}

3)databasehelper

package com.BabyName.DB;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;

public class databasehelper extends SQLiteOpenHelper {
private static String DATABASE_NAME = "BabyNamesDataBase.sqlite";
private SQLiteDatabase myDataBase;
private Context myContext;
@SuppressWarnings("unused")
private String TAG = this.getClass().getSimpleName();
private String path = "/data/data/com.BabyName/databases/";

public databasehelper(Context context) {

super(context, DATABASE_NAME, null, 1);
this.myContext = context;
}

// ---Create the database---
public void createDataBase() throws IOException {

// ---Check whether database is already created or not---
boolean dbExist = checkDataBase();

if (!dbExist) {
this.getReadableDatabase();
try {
// ---If not created then copy the database---
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
this.close();
}

}

// --- Check whether database already created or not---
private boolean checkDataBase() {
try {
String myPath = path + DATABASE_NAME;
File f = new File(myPath);
if (f.exists())
return true;
else
return false;
} catch (SQLiteException e) {
e.printStackTrace();
return false;
}

}

// --- Copy the database to the output stream---
private void copyDataBase() throws IOException {

InputStream myInput = myContext.getAssets().open(DATABASE_NAME);

String outFileName = path + DATABASE_NAME;

OutputStream myOutput = new FileOutputStream(outFileName);

byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}

myOutput.flush();
myOutput.close();
myInput.close();

}

public void openDataBase() throws SQLException {

// --- Open the database---
String myPath = path + DATABASE_NAME;

myDataBase = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
myDataBase.setLockingEnabled(false);
}

@Override
public synchronized void close() {

if (myDataBase != null)
myDataBase.close();

super.close();

}

@Override
public void onCreate(SQLiteDatabase arg0) {
//arg0.execSQL("CREATE TABLE Msg (id text,title text,body text,date1 text)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

public void update_delete_insertquery(String s) {
myDataBase.execSQL(s);
}

public Cursor selectquery(String s) {
return myDataBase.rawQuery(s, null);
}


public ArrayList<BabyNameDB> getAllBabynames() {
ArrayList<BabyNameDB> loc_infos = new ArrayList<BabyNameDB>();
openDataBase();
Cursor c = myDataBase
.rawQuery(
"SELECT * FROM babynamestable", null);
if (c != null) {
if (c.moveToFirst()) {
do {
BabyNameDB loc = new BabyNameDB();
loc.babyid = c.getString(0).trim();
loc.babygender = c.getString(1).trim();
loc.babyname = c.getString(2).trim();
loc.meaning = c.getString(3).trim();
loc.descr = c.getString(4).trim();
loc.castid = c.getString(5).trim();
loc.religionid = c.getString(6).trim();
loc.languageid = c.getString(7).trim();
loc.rashiid = c.getString(8).trim();
loc.isfav = c.getInt(9);
loc_infos.add(loc);
} while (c.moveToNext());
}
}
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return loc_infos;
}
public ArrayList<BabyNameDB> getBabynames(String Where) {
ArrayList<BabyNameDB> loc_infos = new ArrayList<BabyNameDB>();
openDataBase();
Cursor c = myDataBase
.rawQuery(
"SELECT * FROM babynamestable WHERE "+Where+" ORDER BY lower(babyname) ASC", null);
if (c != null) {
if (c.moveToFirst()) {
do {
BabyNameDB loc = new BabyNameDB();
loc.babyid = c.getString(0).trim();
loc.babygender = c.getString(1).trim();
loc.babyname = c.getString(2).trim();
loc.meaning = c.getString(3).trim();
loc.descr = c.getString(4).trim();
loc.castid = c.getString(5).trim();
loc.religionid = c.getString(6).trim();
loc.languageid = c.getString(7).trim();
loc.rashiid = c.getString(8);
loc.isfav = c.getInt(9);
loc_infos.add(loc);
} while (c.moveToNext());
}
}
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return loc_infos;
}

public ArrayList<BabyNameDB> getAllnamesBabynames(String Where) {
ArrayList<BabyNameDB> loc_infos = new ArrayList<BabyNameDB>();
openDataBase();
Cursor c = myDataBase
.rawQuery(
"SELECT * FROM babynamestable WHERE "+Where, null);
if (c != null) {
if (c.moveToFirst()) {
do {
BabyNameDB loc = new BabyNameDB();
loc.babyid = c.getString(0).trim();
loc.babygender = c.getString(1).trim();
loc.babyname = c.getString(2).trim();
loc.meaning = c.getString(3).trim();
loc.descr = c.getString(4).trim();
loc.castid = c.getString(5).trim();
loc.religionid = c.getString(6).trim();
loc.languageid = c.getString(7).trim();
loc.rashiid = c.getString(8);
loc.isfav = c.getInt(9);
loc_infos.add(loc);
} while (c.moveToNext());
}
}
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return loc_infos;
}
public String GetRashiNames(int id) {
String name="";
openDataBase();
Cursor c = myDataBase
.rawQuery(
"SELECT * FROM Rashitable WHERE id="+id, null);
if (c != null) {
if (c.moveToFirst()) {
name=c.getString(1).trim();

}
}
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return name;
}


public void  UpdateFav(int a, String babyid) {
openDataBase();
myDataBase
.execSQL("UPDATE babynamestable set isfav='"+a +"' WHERE babyid IN ("+babyid+")");


myDataBase.close();
SQLiteDatabase.releaseMemory();

}

public ArrayList<String> getPopularnames() {
ArrayList<String> pop_nameList = new ArrayList<String>();
openDataBase();
Cursor c = myDataBase
.rawQuery(
"SELECT * FROM PopularCategory", null);
if (c != null) {
if (c.moveToFirst()) {
do {

pop_nameList.add(c.getString(1).trim());

} while (c.moveToNext());
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return pop_nameList;
}
}
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return pop_nameList;
}
public ArrayList<Integer> getPopularId() {
ArrayList<Integer> pop_nameList = new ArrayList<Integer>();
openDataBase();
Cursor c = myDataBase
.rawQuery(
"SELECT * FROM PopularCategory", null);
if (c != null) {
if (c.moveToFirst()) {
do {

pop_nameList.add(c.getInt(0));

} while (c.moveToNext());
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return pop_nameList;
}
}
c.close();
myDataBase.close();
SQLiteDatabase.releaseMemory();
return pop_nameList;
}


}

4)How to use
   package com.BabyName;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.BabyName.DB.databasehelper;

public class PopularName_Act extends Activity
{
ArrayList<String> pop_nameList;
ArrayList<Integer> pop_idList;
databasehelper dbHelp;
Button btn_back;
TextView txt_title;
private SelectedAdapter selectedadapter;
private ListView list_popularName;
private RelativeLayout relative_topbar;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.popularname);
dbHelp=new databasehelper(this);
pop_nameList = new ArrayList<String>();
pop_idList = new ArrayList<Integer>();
btn_back=(Button)findViewById(R.id.pname_btn_back);
list_popularName=(ListView) findViewById(R.id.popularname_list_name);
relative_topbar = (RelativeLayout) findViewById(R.id.nd_topbar);
btn_back.setOnLongClickListener(new Longclick());
relative_topbar.setOnLongClickListener(new Longclick());
pop_nameList=dbHelp.getPopularnames();
pop_idList=dbHelp.getPopularId();
txt_title=(TextView) findViewById(R.id.pname_txt_title);
Typeface typeface = Typeface.createFromAsset(PopularName_Act.this.getAssets(), "fonts/Bradleys Pen.ttf");
txt_title.setTypeface(typeface);
if(pop_nameList.size()>0)
{
selectedadapter = new SelectedAdapter(PopularName_Act.this,0,pop_nameList);
selectedadapter.setNotifyOnChange(true);
list_popularName.setAdapter(selectedadapter);
}
btn_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private class SelectedAdapter extends ArrayAdapter<Object>
{
@SuppressWarnings("unchecked")
public SelectedAdapter(Context context, int textViewResourceId,
@SuppressWarnings("rawtypes") List objects) 
{
super(context, textViewResourceId, objects);
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) 
{
View v = convertView;
final String tname=this.getItem(position).toString();
// set LayoutInflater in adapter
LayoutInflater vi =   (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.lyt_pname, null);
final TextView txt_name = (TextView)v.findViewById(R.id.lyt_pname_txt_name);
txt_name.setText(tname);
txt_name.setOnLongClickListener(new Longclick());
v.setOnLongClickListener(new Longclick());
txt_name.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Bundle bundal=new Bundle();
Intent i = new Intent(PopularName_Act.this,PopularNameList_Act.class);
int id=pop_idList.get(position);
bundal.putString("where","babyid IN (SELECT babynameid  FROM babynamescategorytable WHERE babynamecatid ="+ id+")");
bundal.putString("title","Popular Names");
i.putExtras(bundal);
startActivity(i);

}
});

return(v);
}
}
}