SQLite資料庫的基本操作方法

來源:互聯網
上載者:User

SQLite資料庫採用了模組化設計,由8個獨立的模組構成,這些獨立模組又構成了三個主要的子系統,模組將複雜的查詢過程分解為細小的工作進行處理

其核心大約有3萬行標準C代碼,模組化的設計使這些代碼更加易於理解

SQLite的架構模型圖如下:

介面:由SQLite API組成,因此無論是應用程式、指令碼,還是庫檔案,最終都是通過介面與SQLite互動

虛擬機器:SQLite資料庫體繫結構中最核心的部分是虛擬機器,也稱為虛擬資料庫引擎(Virtual Database Engine,VDBE)與Java虛擬機器相似,虛擬資料庫引擎用來解釋執行位元組代碼,虛擬資料庫引擎的位元組代碼由128個作業碼構成,這些作業碼主要用以對資料庫進行操作,每一條指令都可以完成特定的資料庫操作,或以特定的方式處理棧的內容

其一些基本操作方法如下:

public class MyData{Context context;SQLHelper sqlHelper;SQLiteDatabase sqLiteDatabase;SQLiteDatabase sqLiteDatabaseSD;public MyData(Context context){this.context = context;}public void open(){sqlHelper = new SQLHelper(context,"database.db", null, 2);try {sqLiteDatabase = sqlHelper.getWritableDatabase();} catch (Exception e) {// TODO Auto-generated catch blocksqLiteDatabase = sqlHelper.getReadableDatabase();}}/* * SD卡建立資料庫*/public void create(){String createDatabase = "create table student (sId integer primary key autoincrement,sName varchar not null,sAge varchar not null,sSex varchar not null);";File file = new File("/mnt/sdcrad/MyDatabase.dp");sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase(file, null);//sqLiteDatabase = SQLiteDatabase.openDatabase("/MyDatabase.dp", null , Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);//這個語句等同於上面兩句語句sqLiteDatabase.execSQL("drop table if exists student");sqLiteDatabaseSD.execSQL(createDatabase);//後面的資料操作沒有用到建立的這個sd當中的表}/* * 查詢資料*/public void query(){Cursor cursor = sqLiteDatabase.query("student",//所要查詢資料的資料庫new String[]{"sId","sName","sAge","sSex"}//所要查詢的資料欄位,null,null,null,null,null);cursor.moveToFirst(); // 移動到資料結果的第一條之前while(cursor.moveToNext()) {String id = cursor.getString(cursor.getColumnIndex("_id"));String name = cursor.getString(cursor.getColumnIndex("name"));String sex = cursor.getString(cursor.getColumnIndex("sex"));String age = cursor.getString(cursor.getColumnIndex("age"));System.out.println("id"+id + " name"+name+" sex"+sex+" age"+age);}//顯示所的資料,也可以打包成一個資料集,返回出去}/* * 插入資料*/public void insert(){ContentValues cv = new ContentValues();cv.put("sName", "lonuery");cv.put("sAge","23");cv.put("sSex", "男");sqLiteDatabase.insert("student", null, cv);}/* * 刪除資料*/public void delete(){sqLiteDatabase.delete("student", "刪除的條件", new String[]{"10"});}/* * 更新資料*/public void upData(){ContentValues cv = new ContentValues();cv.put("sAge", "23");sqLiteDatabase.update("student", cv, "要更新的條件", new String[]{"399"});//whereCaurse要更新的資料的條件 等於null時更新所有資料//whereArgs 所要更新的資料 等於null時更新所有資料}/* * 關閉資料庫*/public void close(){if(sqlHelper!=null){sqlHelper.close();sqlHelper=null;}}class SQLHelper extends SQLiteOpenHelper{public SQLHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}String createTable = "create table student (sId integer primary key autoincrement,sName varchar not null,sAge varchar not null,sSex varchar not null);";@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL(createTable);}//建立資料庫@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubdb.execSQL("drop table if exists student");db.execSQL(createTable);}//更新資料庫,即刪除或添加資料欄位}}

用代碼建立資料庫的方法:

1.上面SQLHelper類繼承SQLiteOpenHelper類,然後重載其建構函式,在執行個體化SQLHelper類時就會為你建立一個資料庫,這是一個方法。

2.通過Context 的openOrCreateDatabase方法或者是SQLiteDatabase 的openOrCreateDatabase方法來建立一個資料庫。

在一android論壇有一網友提出了一個很好的問題:

             Context.openOrCreateDatabase 和SQLiteDatabase.openOrCreateDatabase有什麼區別,既然SQLiteDatabase可以建立資料庫為什麼還要SQLiteOpenHelper來建立資料庫?

有一網友進行了很好的回答:

             Context.openOrCreateDatabase 與 SQLiteDatabase.openOrCreateDatabase本質上完成的功能都一樣,Context.openOrCreateDatabase最終是需要調用

SQLiteDatabase.openOrCreateDatabase來完成資料庫的建立的。也就是說, SQLiteDatabase類是android上對sqlite的最底層的封裝,幾乎所有的對資料

庫的操作最終都通過這個類來實現。而Context裡面提供的方法,是用於內容相關的時候建立資料庫,例如你在某個邏輯裡面建立的資料庫只是在特定的context

裡面,對於資料庫的許可權,交由context來管理,而這個邏輯可能是會提供給不止一個context至於SQLiteDatabase和SQLiteOpenHelper就更好理解了,後者

只是一個抽象類別,用來告訴你怎樣使用SQLiteDatabase類而已,你完全可以自己基於SQLiteDatabase寫一個自己的helper

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.