Created
April 13, 2015 08:04
-
-
Save lifeisfoo/19660a80db7d9c35d235 to your computer and use it in GitHub Desktop.
Use sqlite to as a database log in android
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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