Cơ sở SQLite trong Android

Go down

Cơ sở SQLite trong Android  Empty Cơ sở SQLite trong Android

Bài gửi by n_erudite 20/1/2016, 16:29

SQLite*là một cơ sở dữ liệu mã nguồn mở, nghĩa là sử dụng để thực hiện các hoạt động cơ sở dữ liệu trên các thiết bị*Android*như lưu trữ, thao tác hoặc lấy dữ liệu liên tục từ các cơ sở dữ liệu khi*lap trinh android*.

Ở đây, chúng ta sẽ xem ví dụ của SQLite để lưu trữ và lấy dữ liệu. Dữ liệu được hiển thị trong logcat. Để hiển thị dữ liệu trên spinner hay listview, di chuyển đến trang tiếp theo. Lớp*SQLiteOpenHelper*cung cấp các chức năng để sử dụng cơ sở dữ liệu SQLite.

Lớp SQLiteOpenHelper

Lớp*android.database.sqlite.SQLiteOpenHelper*được sử dụng để tạo ra cơ sở dữ liệu và quản lý phiên bản. Để thực hiện bất kỳ hoạt động cơ sở dữ liệu, bạn phải cung cấp cho việc thực hiện các phương pháp onCreate() và onUpgrade() của lớp SQLiteOpenHelper.

Cấu trúc của lớp SQLiteOpenHelper

Có hai cấu trúc của lớp SQLiteOpenHelper.

Cấu trúc*Mô tả
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) tạo ra một đối tượng để tạo, mở và quản lý cơ sở dữ liệu.
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) tạo ra một đối tượng để tạo, mở và quản lý cơ sở dữ liệu. Nó chỉ định xử lý lỗi.
Phương thức của lớp SQLiteOpenHelper

Có rất nhiều phương pháp trong SQLiteOpenHelper lớp. Một số trong số họ là như sau:

Phương thức*Mô tả
public abstract void onCreate(SQLiteDatabase db) gọi là chỉ một lần khi cơ sở dữ liệu được tạo ra lần đầu tiên.
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) gọi khi cơ sở dữ liệu cần phải được nâng cấp.
public synchronized void close() đóng các đối tượng cơ sở dữ liệu.
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) gọi khi cơ sở dữ liệu cần phải được hạ cấp.
Lớp SQLiteDatabase :*Nó chứa các phương pháp được thực hiện trên cơ sở dữ liệu SQLite như tạo, cập nhật, xóa, chọn vv

Phương thức của lớp SQLiteDatabase

Có rất nhiều phương pháp trong SQLiteDatabase lớp. Một số trong số họ là như sau:

Phương thức*Mô tả
void execSQL(String sql) thực hiện truy vấn sql query hoặc không query.
long insert(String table, String nullColumnHack, ContentValues values) chèn một bản ghi trên các cơ sở dữ liệu. Bảng chỉ định tên bảng, nullColumnHack không cho phép các giá trị hoàn toàn vô giá trị. Nếu số thứ hai là null, android sẽ lưu trữ các giá trị null nếu giá trị là trống rỗng. Đối số thứ ba xác định các giá trị được lưu trữ.
int update(String table, ContentValues values, String whereClause, String[] whereArgs) cập nhật một dòng.
Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) trả về một con trỏ trên resultset.
Ví dụ về cơ sở dữ liệu SQLite database

Hãy xem các ví dụ đơn giản của cơ sở dữ liệu*SQLite android.

File: Contact.java
Mã:
Code:
package com.example.sqlite;
public class Contact {
int _id;
String _name;
String _phone_number;
public Contact(){ }
public Contact(int id, String name, String _phone_number){
this._id = id;
this._name = name;
this._phone_number = _phone_number;
}

public Contact(String name, String _phone_number){
this._name = name;
this._phone_number = _phone_number;
}
public int getID(){
return this._id;
}

public void setID(int id){
this._id = id;
}

public String getName(){
return this._name;
}

public void setName(String name){
this._name = name;
}

public String getPhoneNumber(){
return this._phone_number;
}

public void setPhoneNumber(String phone_number){
this._phone_number = phone_number;
}
}
>> Xem thêm: Khóa học lập trình php cơ bản nâng cao tại hà nội !
File: DatabaseHandler.java

Bây giờ, chúng ta hãy tạo ra các lớp xử lý cơ sở dữ liệu mở rộng lớp*SQLiteOpenHelper*và cung cấp cho việc thực hiện các phương pháp của nó.
Mã:
Code:
package com.example.sqlite;
import java.util.ArrayList;
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;

public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contactsManager";
private static final String TABLE_CONTACTS = "contacts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";

public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
//3rd argument to be passed is CursorFactory instance
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

// Create tables again
onCreate(db);
}

// code to add the new contact
void addContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone

// Inserting Row
db.insert(TABLE_CONTACTS, null, values);
//2nd argument is String containing nullColumnHack
db.close(); // Closing database connection
}

// code to get the single contact
Contact getContact(int id) {
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();

Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2));
// return contact
return contact;
}

// code to get all contacts in a list view
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;

SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}

// return contact list
return contactList;
}

// code to update the single contact
public int updateContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_PH_NO, contact.getPhoneNumber());

// updating row
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
}

// Deleting single contact
public void deleteContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
db.close();
}

// Getting contacts Count
public int getContactsCount() {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();

// return count
return cursor.getCount();
}

}

Xem thêm:*[URL="http://laptrinhandroid.net.vn/khoa-hoc-android-co-ban-nang-cao-o-ha-noi.html/"]Khoa hoc lap trinh android[/URL]*tai ha noi !
File: MainActivity.java
Mã:
Code:
package com.example.sqlite;

import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

DatabaseHandler db = new DatabaseHandler(this);

// Inserting Contacts
Log.d("Insert: ", "Inserting ..");
db.addContact(new Contact("Ravi", "9100000000"));
db.addContact(new Contact("Srinivas", "9199999999"));
db.addContact(new Contact("Tommy", "9522222222"));
db.addContact(new Contact("Karthik", "9533333333"));

// Reading all contacts
Log.d("Reading: ", "Reading all contacts..");
List<Contact> contacts = db.getAllContacts();

for (Contact cn : contacts) {
String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " +
cn.getPhoneNumber();
// Writing Contacts to log
Log.d("Name: ", log);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

Kết quả:

Mở Logcat và nhìn thấy đầu ra. Đây là ví dụ cơ bản của SQLite Android mà không cần bất kỳ GUI. Đối với ứng dụng GUI với*SQLite android, hãy truy cập trang tiếp theo.


------------------- || -------------------
Trung tâm Đào tạo [URL="http://hocphotoshop.vn/khoa-hoc-photoshop-co-ban-nang-cao-o-ha-noi.html/"]khoa*hoc photoshop[/URL]*nâng cao tại VietPro!

n_erudite
Cấp 0
Cấp 0

Tổng số bài gửi : 5
Points : 17
Reputation : 0
Join date : 08/12/2015

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết