Android SQLite Database Tutorial
表名:
列(字段):
联系人实体类:构造方法,setters 、getters方法
File: Contact.java
package com.example.sqlitetest; 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; } }
数据库的创建,表的创建,增删改查操作:
DatabaseHandler.java
package com.example.sqlitetest; 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.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHandler extends SQLiteOpenHelper { //Database Version 数据版本 private static final int DATABASE_VERSION = 1; //Database Name 数据库名 private static final String DATABASE_NAME = "contactsManager"; //Contacts table name 表名 private static final String TABLE_CONTACTS = "contacts"; //Contacts Table Columns names 字段名 private static final String KEY_ID = "id"; private static final String KEY_NAME = "name"; private static final String KEY_PH_NUM = "phone_number"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // Creating Tables 创建表: CREATE TABLE table_name (column_name column_type); @Override public void onCreate(SQLiteDatabase db) { String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PH_NUM + " 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); } /* * CRUD操作。增删改查操作 */ //Adding 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_NUM, contact.getPhoneNumber()); // Contact Phone // Inserting Row db.insert(TABLE_CONTACTS, null, values); db.close(); // Closing database connection } // Getting single contact 获取单条记录 Contact getContact(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, KEY_NAME, KEY_PH_NUM }, 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; } // Getting All Contacts 获取所有的联系人信息 public List<Contact> getAllContacts() { List<Contact> contactList = new ArrayList<Contact>(); // Select All Query 查询:SELECT * FROM tableName WHERE criteria 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 contactList; } // Updating 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_NUM, 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(); } }
Activity:
package com.example.sqlitetest; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class SQLiteActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sqlite); DatabaseHandler db = new DatabaseHandler(this); /** * CRUD Operations 增删改查 * */ // Inserting Contacts Log.d("Insert: ", "Inserting .."); db.addContact(new Contact("yixiaohan", "9111111111")); db.addContact(new Contact("jiangge", "9122222222")); db.addContact(new Contact("xiaokai", "9533333333")); db.addContact(new Contact("xiaoweiwei", "9544444444")); // 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(); Log.d("Name: ", log);// Writing Contacts to log } } }
LogCat: