I have a global DBAdapter and also for each Table one. In my global DB-Adapter I added the type "BLOB" to the column. But i don't get what i have to change in my DBAdapter for the specific Table. What I need to change there that it also works with the BLOB type.
So here you go:
Global DBAdapter:
package de.retowaelchli.filterit.database;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import de.retowaelchli.filterit.database.ADFilterDBAdapter;
public class DBAdapter {
public static final String DATABASE_NAME = "filterit";
public static final int DATABASE_VERSION = 1;
public static final String CREATE_TABLE_ADFILTER = "create table adfilter (_id integer primary key autoincrement, "
+ ADFilterDBAdapter.NAME+","
+ ADFilterDBAdapter.KEYWORD+","
+ ADFilterDBAdapter.CACHE + ");";
private static final String CREATE_TABLE_SFILTER = "create table sfilter (_id integer primary key autoincrement, "
+SFilterDBAdapter.NAME+","
+SFilterDBAdapter.KEYWORD+","
+SFilterDBAdapter.SMILEY+ ");";
private static final String CREATE_TABLE_ADMESSAGES = "create table admessages (_id integer primary key autoincrement, "
+MessagesDBAdapter.PHONENUMBER+","
+MessagesDBAdapter.MESSAGE+ ");";
//HERE I CHANGED IT TO BLOB!
private static final String CREATE_TABLE_SMILEY = " create table smiley (_id integer primary key autoincrement, "
+SmileyDBAdapter.SOURCE+" BLOB ,"
+SmileyDBAdapter.INFO+ ");";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
/**
* Constructor
* @param ctx
*/
public DBAdapter(Context ctx)
{
this.context = ctx;
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(CREATE_TABLE_ADFILTER);
db.execSQL(CREATE_TABLE_SFILTER);
db.execSQL(CREATE_TABLE_ADMESSAGES);
db.execSQL(CREATE_TABLE_SMILEY);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
// Adding any table mods to this guy here
}
}
/**
* open the db
* @return this
* @throws SQLException
* return type: DBAdapter
*/
public DBAdapter open() throws SQLException
{
this.DBHelper = new DatabaseHelper(this.context);
this.db = this.DBHelper.getWritableDatabase();
return this;
}
/**
* close the db
* return type: void
*/
public void close()
{
this.DBHelper.close();
}
}
This is my DBAdapter of this Table:
package de.retowaelchli.filterit.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class SmileyDBAdapter {
public static final String ROW_ID = "_id";
public static final String SOURCE = "source";
public static final String INFO = "info";
private static final String DATABASE_TABLE = "admessages";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private final Context mCtx;
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DBAdapter.DATABASE_NAME, null, DBAdapter.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
/**
* Constructor - takes the context to allow the database to be
* opened/created
*
* @param ctx
* the Context within which to work
*/
public SmileyDBAdapter(Context ctx) {
this.mCtx = ctx;
}
public SmileyDBAdapter open() throws SQLException {
this.mDbHelper = new DatabaseHelper(this.mCtx);
this.mDb = this.mDbHelper.getWritableDatabase();
return this;
}
/**
* close return type: void
*/
public void close() {
this.mDbHelper.close();
}
public long createSmiley(String source, String info ){
ContentValues initialValues = new ContentValues();
initialValues.put(SOURCE, source);
initialValues.put(INFO, info);
return this.mDb.insert(DATABASE_TABLE, null, initialValues);
}
public boolean deleteSmiley(long rowId) {
return this.mDb.delete(DATABASE_TABLE, ROW_ID + "=" + rowId, null) > 0; //$NON-NLS-1$
}
public Cursor getAllSmileys() {
return this.mDb.query(DATABASE_TABLE, new String[] { ROW_ID,
SOURCE, INFO }, null, null, null, null, null);
}
public Cursor getSmiley(long rowId) throws SQLException {
Cursor mCursor =
this.mDb.query(true, DATABASE_TABLE, new String[] { ROW_ID, SOURCE,
INFO }, ROW_ID + "=" + rowId, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateSmiley(long rowId, String source, String info,
String cache){
ContentValues args = new ContentValues();
args.put(SOURCE, source);
args.put(INFO, info);
return this.mDb.update(DATABASE_TABLE, args, ROW_ID + "=" + rowId, null) >0;
}
}
What I need to change in my SmileyDBAdapter to bring it working. That it supports the type BLOB. Im really frustrated after trying this for serval hours -.-
Thx in Advance for your Answer
Best Regards
safari
I really want to display image in list or gridview by fetching from sqlite db and after searching i found one article which work for me. I hope it will helpful for you. Insert Image in SQLite and Display in ListView
Check this Code for Inserting the Image from the Web link and store in the Database as BLOB and shown in ImageView .
Java Code :
CategoryDetails.Java
NotesDbAdapter.Class
Main.xml :
Let me know if you find any Difficulty.
Thanks Venky..