diff --git a/android-sqlite/AndroidManifest.xml b/android-sqlite/AndroidManifest.xml new file mode 100644 index 0000000..66cb763 --- /dev/null +++ b/android-sqlite/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + diff --git a/android-sqlite/ic_launcher-web.png b/android-sqlite/ic_launcher-web.png new file mode 100644 index 0000000..a18cbb4 Binary files /dev/null and b/android-sqlite/ic_launcher-web.png differ diff --git a/android-sqlite/res/drawable-hdpi/ic_launcher.png b/android-sqlite/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..288b665 Binary files /dev/null and b/android-sqlite/res/drawable-hdpi/ic_launcher.png differ diff --git a/android-sqlite/res/layout/activity_main.xml b/android-sqlite/res/layout/activity_main.xml new file mode 100644 index 0000000..168c9b8 --- /dev/null +++ b/android-sqlite/res/layout/activity_main.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/android-sqlite/res/menu/main.xml b/android-sqlite/res/menu/main.xml new file mode 100644 index 0000000..c002028 --- /dev/null +++ b/android-sqlite/res/menu/main.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/android-sqlite/res/values/dimens.xml b/android-sqlite/res/values/dimens.xml new file mode 100644 index 0000000..55c1e59 --- /dev/null +++ b/android-sqlite/res/values/dimens.xml @@ -0,0 +1,7 @@ + + + + 16dp + 16dp + + diff --git a/android-sqlite/res/values/strings.xml b/android-sqlite/res/values/strings.xml new file mode 100644 index 0000000..71308c5 --- /dev/null +++ b/android-sqlite/res/values/strings.xml @@ -0,0 +1,8 @@ + + + + SQLite + Settings + Hello world! + + diff --git a/android-sqlite/res/values/styles.xml b/android-sqlite/res/values/styles.xml new file mode 100644 index 0000000..6ce89c7 --- /dev/null +++ b/android-sqlite/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/android-sqlite/src/com/hmkcode/android/MainActivity.java b/android-sqlite/src/com/hmkcode/android/MainActivity.java new file mode 100644 index 0000000..684a391 --- /dev/null +++ b/android-sqlite/src/com/hmkcode/android/MainActivity.java @@ -0,0 +1,42 @@ +package com.hmkcode.android; + +import java.util.List; + +import com.hmkcode.android.model.Book; +import com.hmkcode.android.sqlite.MySQLiteHelper; + +import android.os.Bundle; +import android.app.Activity; + + +public class MainActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + + MySQLiteHelper db = new MySQLiteHelper(this); + + /** + * CRUD Operations + * */ + // add Books + db.addBook(new Book("Android Application Development Cookbook", "Wei Meng Lee")); + db.addBook(new Book("Android Programming: The Big Nerd Ranch Guide", "Bill Phillips and Brian Hardy")); + db.addBook(new Book("Learn Android App Development", "Wallace Jackson")); + + // get all books + List list = db.getAllBooks(); + + // delete one book + db.deleteBook(list.get(0)); + + // get all books + db.getAllBooks(); + + + } + +} diff --git a/android-sqlite/src/com/hmkcode/android/model/Book.java b/android-sqlite/src/com/hmkcode/android/model/Book.java new file mode 100644 index 0000000..19f0ea2 --- /dev/null +++ b/android-sqlite/src/com/hmkcode/android/model/Book.java @@ -0,0 +1,46 @@ +package com.hmkcode.android.model; + + + +public class Book { + + private int id; + private String title; + private String author; + + public Book(){} + + public Book(String title, String author) { + super(); + this.title = title; + this.author = author; + } + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getAuthor() { + return author; + } + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String toString() { + return "Book [id=" + id + ", title=" + title + ", author=" + author + + "]"; + } + + + +} diff --git a/android-sqlite/src/com/hmkcode/android/sqlite/MySQLiteHelper.java b/android-sqlite/src/com/hmkcode/android/sqlite/MySQLiteHelper.java new file mode 100644 index 0000000..a0f6df1 --- /dev/null +++ b/android-sqlite/src/com/hmkcode/android/sqlite/MySQLiteHelper.java @@ -0,0 +1,185 @@ +package com.hmkcode.android.sqlite; + +import java.util.LinkedList; +import java.util.List; + +import com.hmkcode.android.model.Book; + +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 MySQLiteHelper extends SQLiteOpenHelper { + + // Database Version + private static final int DATABASE_VERSION = 1; + // Database Name + private static final String DATABASE_NAME = "BookDB"; + + public MySQLiteHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // SQL statement to create book table + String CREATE_BOOK_TABLE = "CREATE TABLE books ( " + + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "title TEXT, "+ + "author TEXT )"; + + // create books table + db.execSQL(CREATE_BOOK_TABLE); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // Drop older books table if existed + db.execSQL("DROP TABLE IF EXISTS books"); + + // create fresh books table + this.onCreate(db); + } + //--------------------------------------------------------------------- + + /** + * CRUD operations (create "add", read "get", update, delete) book + get all books + delete all books + */ + + // Books table name + private static final String TABLE_BOOKS = "books"; + + // Books Table Columns names + private static final String KEY_ID = "id"; + private static final String KEY_TITLE = "title"; + private static final String KEY_AUTHOR = "author"; + + private static final String[] COLUMNS = {KEY_ID,KEY_TITLE,KEY_AUTHOR}; + + public void addBook(Book book){ + Log.d("addBook", book.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_TITLE, book.getTitle()); // get title + values.put(KEY_AUTHOR, book.getAuthor()); // get author + + // 3. insert + db.insert(TABLE_BOOKS, // table + null, //nullColumnHack + values); // key/value -> keys = column names/ values = column values + + // 4. close + db.close(); + } + + public Book getBook(int id){ + + // 1. get reference to readable DB + SQLiteDatabase db = this.getReadableDatabase(); + + // 2. build query + Cursor cursor = + db.query(TABLE_BOOKS, // 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 book object + Book book = new Book(); + book.setId(Integer.parseInt(cursor.getString(0))); + book.setTitle(cursor.getString(1)); + book.setAuthor(cursor.getString(2)); + + Log.d("getBook("+id+")", book.toString()); + + // 5. return book + return book; + } + + // Get All Books + public List getAllBooks() { + List books = new LinkedList(); + + // 1. build the query + String query = "SELECT * FROM " + TABLE_BOOKS; + + // 2. get reference to writable DB + SQLiteDatabase db = this.getWritableDatabase(); + Cursor cursor = db.rawQuery(query, null); + + // 3. go over each row, build book and add it to list + Book book = null; + if (cursor.moveToFirst()) { + do { + book = new Book(); + book.setId(Integer.parseInt(cursor.getString(0))); + book.setTitle(cursor.getString(1)); + book.setAuthor(cursor.getString(2)); + + // Add book to books + books.add(book); + } while (cursor.moveToNext()); + } + + Log.d("getAllBooks()", books.toString()); + + // return books + return books; + } + + // Updating single book + public int updateBook(Book book) { + + // 1. get reference to writable DB + SQLiteDatabase db = this.getWritableDatabase(); + + // 2. create ContentValues to add key "column"/value + ContentValues values = new ContentValues(); + values.put("title", book.getTitle()); // get title + values.put("author", book.getAuthor()); // get author + + // 3. updating row + int i = db.update(TABLE_BOOKS, //table + values, // column/value + KEY_ID+" = ?", // selections + new String[] { String.valueOf(book.getId()) }); //selection args + + // 4. close + db.close(); + + return i; + + } + + // Deleting single book + public void deleteBook(Book book) { + + // 1. get reference to writable DB + SQLiteDatabase db = this.getWritableDatabase(); + + // 2. delete + db.delete(TABLE_BOOKS, + KEY_ID+" = ?", + new String[] { String.valueOf(book.getId()) }); + + // 3. close + db.close(); + + Log.d("deleteBook", book.toString()); + + } +}