Here we are using a java class for creating the table
PlaceDataSQL.java
package com.data.pack;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/** Helper to the database, manages versions and creation */
public class PlaceDataSQL extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "sample.db";
private static final int DATABASE_VERSION = 1;
private Context context;
public PlaceDataSQL(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE gallery (id varchar(20), image varchar(2000),caption varchar(160),description varchar(200))");
}
private void versionUpdation(SQLiteDatabase db) {
}
/**
* Check if the database already exist to avoid re-copying the file each
* time you open the application.
*
* @return true if it exists, false if it doesn't
*/
public boolean checkDataBase(String db) {
SQLiteDatabase checkDB = null;
try {
String myPath = "data/data/com.data.pack/databases/" + db;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
// database does't exist yet.
} catch (Exception e) {
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >= newVersion)
return;
if (oldVersion == 1) {
Log.d("New Version", "Datas can be upgraded");
}
Log.d("Sample Data", "onUpgrade : " + newVersion);
}
}
Here in the onCreate function the table is created and the onUpgrade function is used to upgrade the table on the next release, for example you had create an application and published it in market and a guy is using your application, now suddenly you like to add another field on your table means you need to change the " DATABASE_VERSION " to 2 and in the onUpgrade funtion you need to write the alter query there. Likewise i had using a funtion checkDataBase(), this is to check whether the database is exist or not.
Then in the main activity we are calling delete to delete the table content, likewise we will be using a function insertData, inside this function we will be inserting data to the table, like that we will be using getDataAndPopulate(), here we will be retrieving data from the table and displaying in the list.
SqliteDBActivity.java
package com.data.pack;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class SqliteDBActivity extends ListActivity {
private static PlaceDataSQL placeData;
private ArrayListid = new ArrayList ();
private ArrayListimage = new ArrayList ();
private ArrayListcaption = new ArrayList ();
private ArrayListdescription = new ArrayList ();
private Button populate;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
populate = (Button) findViewById(R.id.populate);
placeData = new PlaceDataSQL(this);
SQLiteDatabase db = placeData.getWritableDatabase();
Cursor cursors = getRawEvents("select * from gallery");
if (cursors.moveToNext()) {
populate.setVisibility(View.GONE);
getDataAndPopulate();
} else {
populate.setVisibility(View.VISIBLE);
}
db.delete("gallery", "id=?", new String[] {
"12" });
populate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
insertData("1","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXQTlp6hJ5voBMw9WxJFAFUGW_kUzEeBdoHuRFMkEn8j-mYxrDDmoBizU3Seo1P0BxPre5g2i2JUZi1UpaISGq00rp-h1apLEUxMzVl8WHWQWiZUzhiFRyA63wsvq2tMsN2Ze5LbmhaPk/s1600/twitter_follow.gif","First","This is the first item");
insertData("2","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6KGi-xGVQybCuzpxCAGMXIKz91RSKaLSCEhUF_yDtzNolI6jAfls0nh_xLEB9wJw0kExxZs0FgRHjxFU2Vm4EDzoFWebBinKNFvi8lc_xhpToMInmiOG71ER8jTSEFySuQ_u1lHgbW6I/s320/seek.JPG","Second","This is the second item");
getDataAndPopulate();
}
});
}
private void insertData(String id, String image, String caption, String description) {
SQLiteDatabase db = placeData.getWritableDatabase();
ContentValues values;
values = new ContentValues();
values.put("id", id);
values.put("image", image);
values.put("caption", caption);
values.put("description", description);
db.insert("gallery", null, values);
}
private void getDataAndPopulate() {
id = new ArrayList();
image = new ArrayList();
caption = new ArrayList();
description = new ArrayList();
Cursor cursor = getEvents("gallery");
while (cursor.moveToNext()) {
String temp_id = cursor.getString(0);
String temp_image = cursor.getString(1);
String temp_caption = cursor.getString(2);
String temp_description = cursor.getString(3);
id.add(temp_id);
image.add(temp_image);
caption.add(temp_caption);
description.add(temp_description);
}
String[] captionArray = (String[]) caption.toArray(
new String[caption.size()]);
ItemsAdapter itemsAdapter = new ItemsAdapter(
SqliteDBActivity.this, R.layout.item,
captionArray);
setListAdapter(itemsAdapter);
populate.setVisibility(View.GONE);
}
private class ItemsAdapter extends BaseAdapter {
String[] items;
public ItemsAdapter(Context context, int textViewResourceId,
String[] items) {
this.items = items;
}
@Override
public View getView(final int POSITION, View convertView,
ViewGroup parent) {
TextView desc;
TextView cap;
View view = convertView;
ImageView img;
if (view == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.item, null);
}
img = (ImageView) view.findViewById(R.id.image);
cap = (TextView) view.findViewById(R.id.caption);
desc = (TextView) view.findViewById(R.id.description);
cap.setText(caption.get(POSITION));
desc.setText(description.get(POSITION));
try {
URL url = new URL(image.get(POSITION));
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
BitmapFactory.Options bfOptions = new BitmapFactory.Options();
bfOptions.inDither = false; // Disable Dithering
// mode
bfOptions.inPurgeable = true; // Tell to gc that
// whether it needs
// free memory, the
// Bitmap can be
// cleared
bfOptions.inInputShareable = true; // Which kind of
// reference
// will be used
// to recover
// the Bitmap
// data after
// being clear,
// when it will
// be used in
// the future
bfOptions.inTempStorage = new byte[16 * 1024];
Bitmap bmp = null;
bmp = BitmapFactory.decodeStream(input, null,
bfOptions);
img.setImageBitmap(bmp);
connection.disconnect();
input.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
} catch (IllegalAccessError e) {
} catch (NullPointerException e) {
}
return view;
}
public int getCount() {
return items.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
}
private Cursor getRawEvents(String sql) {
SQLiteDatabase db = (placeData).getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
startManagingCursor(cursor);
return cursor;
}
private Cursor getEvents(String table) {
SQLiteDatabase db = (placeData).getReadableDatabase();
Cursor cursor = db.query(table, null, null, null, null, null, null);
startManagingCursor(cursor);
return cursor;
}
}
In this example i had wrote two types of retrieving methods from the table, by writing the query and specifying the table name itself.
You can download the full source code
Have a good day.
Thanks for the example really nice example. Get more other Android Examples, Basic android sample Example source code, tutorial, gridview, progressdialog, listview, orientation, notificaiton etc simple basic example with Firs "Hello World" and Android sdk installation etc. just visit:
ReplyDeletewww.android-solution-sample.blogspot.com
Really well written, the listactivity in android has always been a constant source of confusion....
ReplyDeleteReally nice application. Thanks a lot
ReplyDeleteand i have one more doubt .How to retrieve image from remote database
can't able to download source code. Plz help.
ReplyDeletelistview component populating
ReplyDeleteeverything is good but how to download the source code, whenever I press that stupid download button it is redirecting to take a survey.Again in that survey I need to take 1 lakh stupid worth insurance policy.And there are 2 more other stupid options can anyone tell me how to download the source code
ReplyDeletenice blog
ReplyDeletewatch SQLite Database CRUD Operation in Android
http://blog.e-logicsense.com/android-sqlite-database-crud-operation/
watch records to storing database in an array. list of type student and passing this list to the adapter .update and delete record .
http://blog.e-logicsense.com/android-sqlite-database-crud-operation/
Very informative ..i suggest this blog to my friends..Thank you for sharing
ReplyDeleteAndroid Training institute in chennai with placement | Android Training in chennai |Best Android Training in Velachery
Iamlinkfeeder
ReplyDeleteIamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder
Iamlinkfeeder