Skip to content

Instantly share code, notes, and snippets.

@lifeisfoo
Created April 13, 2015 08:04
Show Gist options
  • Save lifeisfoo/19660a80db7d9c35d235 to your computer and use it in GitHub Desktop.
Save lifeisfoo/19660a80db7d9c35d235 to your computer and use it in GitHub Desktop.
Use sqlite to as a database log in android
package com.example.alessandro.sqlitetest;
import java.util.LinkedList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class Log2Sqlite extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "LogDB";
public Log2Sqlite(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//------------- TODO
//-- 1. synchronized for add/delete
//-- 2. SQLiteDatabase object singleton una tantum (concurrency managed in 1.)
//-- 3. onclose/ondestroy/etc override for closing db at app exit
@Override
public void onCreate(SQLiteDatabase db) {
// SQL statement to create log table
String CREATE_LOGS_TABLE = "CREATE TABLE logs ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"content TEXT)";
// create log table
db.execSQL(CREATE_LOGS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older logs table if existed
db.execSQL("DROP TABLE IF EXISTS logs");
// create fresh logs table
this.onCreate(db);
}
/**
* CRUD operations (create "add", read "get", update, delete) log + get all log + delete all logs
*/
// Logs table name
private static final String TABLE_LOGS = "log";
// Logs Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_CREATED = "created";
private static final String KEY_CONTENT = "content";
private static final String[] COLUMNS = {KEY_ID, KEY_CREATED, KEY_CONTENT};
public void addLog(LogModel logModel) {
Log.d("addLog", logModel.toString());
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
// 2. create ContentValues to add key "column"/value
ContentValues values = new ContentValues();
values.put(KEY_CREATED, logModel.getCreated());
values.put(KEY_CONTENT, logModel.getContent());
// 3. insert
db.insert(TABLE_LOGS, // table
null, //nullColumnHack
values); // key/value -> keys = column names/ values = column values
// 4. close
db.close();
}
public LogModel getLogModel(int id) {
// 1. get reference to readable DB
SQLiteDatabase db = this.getReadableDatabase();
// 2. build query
Cursor cursor = db.query(TABLE_LOGS, // a. table
COLUMNS, // b. column names
" id = ?", // c. selections
new String[]{String.valueOf(id)}, // d. selections args
null, // e. group by
null, // f. having
null, // g. order by
null); // h. limit
// 3. if we got results get the first one
if (cursor != null) {
cursor.moveToFirst();
}
// 4. build log object
LogModel logModel = new LogModel();
logModel.setId(Integer.parseInt(cursor.getString(0)));
logModel.setCreated(Integer.parseInt(cursor.getString(1)));
logModel.setContent(cursor.getString(2));
Log.d("getLog(" + id + ")", logModel.toString());
// 5. return log
return logModel;
}
// Get All Logs
public List<LogModel> getAllLogs() {
List<LogModel> logs = new LinkedList<LogModel>();
//1. build the query
String query = "SELECT  * FROM " + TABLE_LOGS;
//2. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
//3. go over each row, build log and add it to list
LogModel logModel = null;
if (cursor.moveToFirst()) {
do {
logModel = new LogModel();
logModel.setId(Integer.parseInt(cursor.getString(0)));
logModel.setCreated(Integer.parseInt(cursor.getString(1)));
logModel.setContent(cursor.getString(2));
// Add log to logs
logs.add(logModel);
} while (cursor.moveToNext());
}
Log.d("getAllLogs()", logModel.toString());
// return logs
return logs;
}
// Deleting single log
public void deleteLog(LogModel logModel) {
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
// 2. delete
db.delete(TABLE_LOGS,
KEY_ID + " = ?",
new String[]{String.valueOf(logModel.getId())});
// 3. close
db.close();
Log.d("deleteLog", logModel.toString());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment