Android數(shù)據(jù)持久化之SQLite數(shù)據(jù)庫用法分析
本文實例講述了Android數(shù)據(jù)持久化之SQLite數(shù)據(jù)庫用法。分享給大家供大家參考,具體如下:
這一節(jié)我將總結(jié)一下android中的另一種數(shù)據(jù)存儲——SQLite 的相關(guān)知識點
SQLite數(shù)據(jù)庫是android系統(tǒng)自帶的,主要用到的類包括SQLiteOpenHelper和SQLiteDatabase。
1、SQLiteOpenHelper:創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫版本管理的輔助類,該類是一個抽象類,所以我們一般都有一個子類SQLiteOpenHelper,需要繼承實現(xiàn)的方法主要有onCreate()、onUpgrade()、getWritableDatabase()等。getWritableDatabase()方法返回的是SQLiteDatabase對象實例,如果數(shù)據(jù)庫尚未創(chuàng)建,則會自動調(diào)用onCreate()方法來創(chuàng)建數(shù)據(jù)庫,所以一些建表和數(shù)據(jù)初始化操作,應該放在onCreate()方法里 。
2、SQLiteDatabase:操作SQLite數(shù)據(jù)庫的類,可以進行SQL語句,對數(shù)據(jù)庫進行增、刪、改、查的操作,該對象已經(jīng)對基本的數(shù)據(jù)庫操作進行了封裝。可以調(diào)用insert()、delete()、executeSQL()等方法,進行實際的數(shù)據(jù)庫操作 ,這個類相當于JDBC中的Connection,也類似Hibernate中的Session,或者Spring中的HibernateTemplate;也可以進行transaction的控制。很多對數(shù)據(jù)庫的操作最終都是通過SQLiteDatabase實例來調(diào)用執(zhí)行的。
注意:數(shù)據(jù)庫對于一個應用時私有的,并且在一個應用當中,數(shù)據(jù)庫的名字也是唯一的。
3、Corsor:游標。通過Cursor可以對于從數(shù)據(jù)庫中查詢出來的結(jié)果集進行隨機的讀寫訪問。對于數(shù)據(jù)庫的查詢結(jié)果,一般是由子類SQLiteCursor返回的。
特別注意:開發(fā)的時候一般會對前面兩個類做一下包裝,比如進行簡單的封裝,使得SQLiteDatabase的查詢方法不是返回原始的Cursor類(Cursor相當于JDBC中的ResultSet),而是返回業(yè)務(wù)對象等等
實現(xiàn)的代碼如下:
SQLiteOpenHelper類的實現(xiàn):
package com.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHelpler extends SQLiteOpenHelper{
private static final int VERSION = 1;
public DataBaseHelpler(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DataBaseHelpler(Context context,String name){
this(context,name,VERSION);
}
public DataBaseHelpler(Context context, String name,int version){
this(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("creat database");
db.execSQL("create table student(no int,name verchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("upgrade database");
}
}
SQLite類的實現(xiàn):
package com.sql;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SQLiteActivity extends Activity {
/** Called when the activity is first created. */
private Button button_create,
button_upgreate,
button_insert,
button_up,
button_query,
button_delete;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button_create = (Button) findViewById(R.id.button1);
button_upgreate = (Button) findViewById(R.id.button2);
button_insert = (Button) findViewById(R.id.button3);
button_up = (Button) findViewById(R.id.button4);
button_query = (Button) findViewById(R.id.button5);
button_delete = (Button) findViewById(R.id.button6);
//創(chuàng)建數(shù)據(jù)庫
button_create.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DataBaseHelpler dbh = new DataBaseHelpler(SQLiteActivity.this,"tabel_one");
SQLiteDatabase sql = dbh.getReadableDatabase();
}
});
//更新數(shù)據(jù)庫
button_upgreate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DataBaseHelpler dbh = new DataBaseHelpler(SQLiteActivity.this,"tabel_one",2);
SQLiteDatabase sql = dbh.getReadableDatabase();
}
});
//向數(shù)據(jù)庫中的表中插入內(nèi)容
button_insert.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
values.put("no", 123);
values.put("name", "zhangsan");
DataBaseHelpler dbh = new DataBaseHelpler(SQLiteActivity.this,"tabel_one",2);
SQLiteDatabase sql = dbh.getReadableDatabase();
sql.insert("tabel_one", null, values);
}
});
//更新表的內(nèi)容
button_up.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DataBaseHelpler dbh = new DataBaseHelpler(SQLiteActivity.this,"tabel_one");
SQLiteDatabase sql = dbh.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("name", "wangwu");
sql.update("tabel_one", values, "id=?", new String[]{"1"});
}
});
//查找表的內(nèi)容
button_query.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
//刪除
button_delete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
}
}
以上就是SQLite基本的應用。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Kotlin使用協(xié)程實現(xiàn)高效并發(fā)程序流程詳解
這篇文章主要介紹了Kotlin使用協(xié)程實現(xiàn)高效并發(fā)程序流程,協(xié)程屬于Kotlin中非常有特色的一項技術(shù),因為大部分編程語言中是沒有協(xié)程這個概念的。那么什么是協(xié)程呢?它其實和線程有點相似,可以簡單地將它理解成一種輕量級的線程2023-01-01
Fragment里添加ListView不要用ListFragment
這篇文章主要介紹了Fragment里添加ListView不要用ListFragment,需要的朋友可以參考下2015-07-07
android getActivity.findViewById獲取ListView 返回NULL的方法
下面小編就為大家?guī)硪黄猘ndroid getActivity.findViewById獲取ListView 返回NULL的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
Android實現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料
本篇文章介紹了Android實現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料,詳細的介紹了第三方授權(quán)登錄的實現(xiàn)代碼,有需要的朋友可以了解一下。2016-11-11
使用ViewPager實現(xiàn)高仿launcher左右拖動效果
今天用ViewPager這個類實現(xiàn)了同樣的左右拖動效果,這樣代碼更少,但是效果是一樣的,ViewPager是實現(xiàn)左右兩個屏幕平滑地切換的一個類,它是Google提供的,有需要的朋友可以了解下2013-01-01
Android 開發(fā)之旅:詳解view的幾種布局方式及實踐
這篇文章主要介紹了Android 開發(fā)之旅:詳解view的幾種布局方式及實踐,具有一定的參考價值,有需要的可以了解一下。2016-12-12

