1. 程式人生 > >Android學習筆記----SQLite資料庫基本用法

Android學習筆記----SQLite資料庫基本用法

/*************************************************************************/

資料庫 Android 為了讓我們能夠更加方便地管理資料庫,專門提供了一個 SQLiteOpenHelper 幫助類,藉助這個類就可以非常簡單地對資料庫進行建立和升級 SQLiteOpenHelper 具有的方法 onCreate()    : 抽象方法,需在子類中實現,在該方法中實現建立資料庫的邏輯
onUpgrade(): 抽象方法,需在子類中實現,在該方法中實現升級資料庫的邏輯
getWritableDatabase()  : 實 例 方 法,
建立或開啟一個現有的資料庫(如果資料庫已存在 則直接開啟,否則建立一個新的資料庫),並返回一個可對資料庫進行讀寫操作的物件, getReadableDatabase() : 實 例 方 法, 建立或開啟一個現有的資料庫(如果資料庫已存在 則直接開啟,否則建立一個新的資料庫),並返回一個可對資料庫進行讀寫操作的物件, getWritableDatabase()跟getReadableDatabase()的區別
當資料庫不可寫入的時候(如磁碟空間已滿) getReadableDatabase()方法返回的對 象將以只讀的方式去開啟資料庫,而 getWritableDatabase()方法則將出現異常

構造方法 SQLiteOpenHelper 中有兩個構造方法可供重寫,一般使用引數少一點的那個構造方法即 可。 構造方法的引數 第一個引數   Context,上下文
第二個引數   建立的資料庫的名稱 第三個引數   在查詢資料的時候返回一個自定義的 Cursor,一般都是傳入 null 第四個引數   當 前 數 據 庫 的 版 本 號,可 用 於 對 數 據 庫 進 行 升 級 操 作 構 建 出SQLiteOpenHelper 的例項之後,再呼叫它的 getReadableDatabase()或 getWritableDatabase()方法就能夠建立資料庫了,資料庫檔案會存放在/data/data/<package name>/databases/目錄下。此時, 重寫的 onCreate()方法也會得到執行, 所以通常會在這裡去處理一些建立表的邏輯。
新建一個類繼承 SQLiteOpenHelper,給該類建立構造方法
public class CoolWeatherOpenHelper extends SQLiteOpenHelper {

/*
    * Province省份
    *
    * */
public static final  String CREATE_PROVINCE = "create table Province(id integer primary key autoincrement,province_name text,province_code text)";

/*
    * City城市
    *
    * */
public static  final  String CREATE_CITY = "create table City(id integer primary key autoincrement,city_name text,city_code text,province_code text)";


/*
    * Country縣
    *
    * */

public  static final  String CREATE_COUNTRY = "create table Country(id integer primary key autoincrement,country_name text,country_code text,city_code text)";


         public CoolWeatherOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
         }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_PROVINCE);
            db.execSQL(CREATE_CITY);
            db.execSQL(CREATE_COUNTRY);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
}

新增資料
CoolWeatherOpenHelper  dbHelper = new CoolWeatherOpenHelper(this, "cool_weather", null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
// 開始組裝第一條資料
values.put("province_name", "山東");
values.put("province_code", "07");
db.insert("Province", null, values); // 插入第一條資料
values.clear();
// 開始組裝第二條資料
values.put("province_name", "山西");
values.put("province_code", "09");
db.insert("Province", null, values); // 插入第二條資料

更新資料
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("province_name", "湖北");
db.update("Province", values, "province_code = ?", new String[] {"09"});

刪除資料
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("Province", "province_code = ?", new String[] {"09"});

查詢資料
SQLiteDatabasedb = dbHelper.getWritableDatabase();
Cursor cursor = db.query("Province", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
        String priovice_name = cursor.getString(cursor.getColumnIndex("province_name"));
        String province_code = cursor.getString(cursor.getColumnIndex("provice_code"));
        Log.d("MainActivity", "province name is " + priovice_name);
        Log.d("MainActivity", "province code is " + province_code);
    } while (cursor.moveToNext());
}
cursor.close();

資料庫中的事務
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction(); // 開啟事務
try {
    ..............................................................
    ..............................................................
    ..............................................................
db.setTransactionSuccessful(); // 事務已經執行成功
} catch (Exception e) {
   e.printStackTrace();
} finally {
   db.endTransaction(); // 結束事務
}

注:為了確保endTransaction()方法一定會執行,將該方法放在finally方法裡面 Android 已經給我們提供了很多非常方便的 API 用於操作資料庫,不過總會有一些人不習慣去使用這些輔助性的方法,而是更加青睞於直接使用 SQL 來操作資料庫 新增資料 db.execSQL("insert into Province (provice_name, province_code) values(?, ?)",new String[] {  "山東", "07" }); 更新資料 db.execSQL("update Province set province_code = ? where province_name = ?", new String[] { "10", "山西" }); 刪除資料 db.execSQL("delete from Province where province_code = ?", new String[] { "10" }); 查詢資料 db.rawQuery("select * from Book", null);

相關推薦

Android學習筆記----SQLite資料庫基本用法

/*************************************************************************/ 資料庫 Android 為了讓我們能夠更加方

Android學習筆記——SQLite資料庫案例【商品展示】

簡介 SQLite,是一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域專案。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠

AndroidSQLite資料庫基本用法詳解(極簡潔)

    Android操作SQLite資料庫(極簡潔,極易懂) 本篇原始碼地址: 原始碼裡面有詳細註釋,切記要修改一下gradle的版本號為本地gradle版本號,否則AndroidStduio會自行下載,浪費時間。 一、成品效果圖 Android

Linux學習筆記13——sed基本用法

sed命令三大基本文本處理工具:grep,sed(流編輯器),awk sed: Stream EDitor 行編輯器:sed全屏編輯器:vi sed: 模式空間默認不編輯文件本身,僅對模式空間中的數據做處理;而後,處理結束後,將模式空間打印至屏幕; sed [options] ‘AddressCommand‘

Android學習SQLite資料庫儲存

  今天學習sqlite資料庫儲存,sqlite資料庫是輕量級的,非常小,只有幾百K大小,非常 移動裝置使用,幾乎所有的手機使用的都是sqlite資料庫。   sqlite儲存的資料型別:.db   資料儲存的路徑:/data/data/packageName/d

Android學習SQLite資料庫簡單測試例項

MyOpenDB.java檔案 package com.example.androidsqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; impor

JUnit學習筆記(一):基本用法

JUnit學習筆記(一):基本用法 JUnit是Java的單元測試框架。JUnit提倡“先測試後編碼”的理念,強調建立測試資料的程式碼,可以先測試,再應用。 框架的特點:     JUnit

Java學習筆記之LinkedList基本用法

LinkedList簡介LinkedList 是一個繼承於AbstractSequentialList的雙向連結串列。它也可以被當作堆疊、佇列或雙端佇列進行操作。LinkedList 實現 List 介面,能進行佇列操作。LinkedList 實現 Deque 介面,即能將L

Android學習筆記 四一 SQLite的使用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android學習筆記 四二 SQLite ListView ContextMenu

繼續上一個例子,結合ListView中對SQLite進行操作。通過CursorAdapter在ListView中的資料呈現在上一個例子中,我們可以對SQLite中的資料庫進行增刪改查,將資料讀到遊標Cursor中,然後一一讀出。在Android中可以通過CursorAdapter直接將資料對映到ListVie

MySQL學習筆記資料庫基礎、MySQL基本操作、表的查詢

#選擇資料庫需要考慮的問題:     1、是否開源         開源軟體不一定免費:MySQL,MariaDB(這兩者語法差不多,MySQL可能閉源,但是MariaDB不會)MongoDB  

android 註解學習筆記一: java基本註解

註解 定義:註解(Annotation),也叫元資料。一種程式碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、介面、列舉是在同一個層次。它可以宣告在包、類、欄位、方法、區域性變數、方法引數等的前面,用來對這些元素進行說明,註釋。 註解的功能建立在反

Android學習筆記(35)--- 使用sqlite 把.txt檔案導進.db

一、新建txt檔案,以一下固定格式儲存資料,如下: 1|1000|file:///system/kindergarten/item_main.html 2|1001|file:///system/kindergarten/item_main.html 3|1002|file

MYSQL學習筆記三——資料庫基本操作

1.      建立資料庫  MySQL安裝完成後,會在其data目錄下建立幾個必需的資料庫,可以用“show databases;”檢視當前存在的所有資料庫。 1.1建立資料庫是在系統磁碟上劃分一塊區域用於資料的儲存和管理。 1.2MySQL中建立資料庫的基本SQL語法:

Android學習筆記八:SQLite判斷一張表是否存在

CREATE TABLE sqlite_master ( type TEXT, name TEXT, tbl_name TEXT, rootpage INTEGER, sql TEXT ); 對於表來說,type 欄位永遠是 ‘table’,name 欄位永遠是表的名字。所以,要獲得資料庫中所有表的列表,

Android學習筆記:介面設計Material Design的基本使用方法(二)

四、卡片式佈局1、使用CardView實現卡片式佈局CardView由appcompat-v7庫提供,它也是一個FrameLayout,只是額外的提供了圓角和陰影等效果。CardView的使用方法:<android.support.v7.widget.CardView

spring boot學習筆記(三):controller用法資料庫操作

一、controller用法 1、@controller和@RestController註解的區別    @controller處理http請求,頁面展示需要配合thymeleaf模板使用。 示例: a、首先,在pom檔案新增thymeleaf模板依賴

Android輔助功能 Accessibility Services基本用法筆記

概述 Accessbility 又叫做輔助功能,是Android官方推出幫助身體不便或者操作不靈活的人來輔助操作手機應用的。當然也可以用來幹一些別的事,比如自動搶紅包啊,靜默安裝app,幫助用於開一系列許可權操作等。出於專案需求,大概研究了下Accessili

SQLITE學習筆記二(資料庫管理,命令列操作)

2.下載完成後解壓得到sqlite3.exe,放置在任意目錄; 3.使用方式:    a.開啟資料庫 Microsoft Windows XP [版本 5.1.2600] (C) 版權所有 1985-2001 Microsoft Corp. C:\Documents a

Pro Android學習筆記(一三七):Home Screen Widgets(3):配置Activity

map onclick widgets info xtra ces extends height appwidget 文章轉載僅僅能用於非商業性質,且不能帶有虛擬貨幣、積分、註冊等附加條件。轉載須註明出處http://blog.csdn.net/flowingfly