Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android下使用SQLite數據庫

Android下使用SQLite數據庫

編輯:關於Android編程

1.SQLite數據庫的特點
安卓手機自帶, 小巧, 適合在手機中使用
不區分數據類型(主鍵除外)
SQL語句和MySQL幾乎相同
SQLite不使用JDBC連接, 使用的是Android自有的API
每個數據庫對應一個文件
* 2.創建數據庫
定義類繼承SQLiteOpenHelper, 實現onCreate(), onUpgrade()
創建該類對象, 調用getWritableDatabse()或者getReadableDatabse()
情況1: 數據庫文件不存在, 創建文件, 打開數據庫連接(得到SQLiteDatabase對象), 執行onCreate()方法
情況2: 數據庫文件存在, 版本號沒變, 打開數據庫連接
情況3: 數據庫文件存在, 版本號提升, 升級數據庫, 打開數據庫連接,執行onUpgrade()方法

情況4: 數據庫文件存在, 版本號降低, 執行onDowngrade()方法, 方法中默認會拋出一個異常

代碼:MySQLiteOpenHelper.java

package com.oterman.mysqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
	/**
	 * 由於父類沒有默認的無參數的構造函數,故需要顯示的寫出構造函數,然後去調用父類有參數的構造函數;
	 * 參數1:context表示應用程序的環境,用來確定數據庫文件的位置;
	 * 參數2:數據庫文件的名字;
	 * 參數3:用來創建結果集Cursor的工廠,默認傳入null;
	 * 參數4:數據的版本號,從1開始;
	 * @param context
	 * @param version
	 */

	public MySQLiteOpenHelper(Context context,int version) {
		super(context,"myfirstdb.db",null,version);
	}
	

	public MySQLiteOpenHelper(Context context) {
		super(context,"myfirstdb.db",null,1);
	}
	
	
	/**
	 * 如果數據庫文件不存在,調用該方法;
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		System.out.println("數據庫創建啦");
		db.execSQL("create table account(_id Integer primary key autoincrement,name varchar(40))");
		
	}

	/**
	 * 數據庫文件存在,版本號發生變化,會調用該方法;
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		System.out.println("數據庫升級啦");

	}

}



* 3.創建表或修改表
SQLiteDatabase類的execSQL()方法可以執行一條SQL語句
如果希望創建數據庫的時候就創建一些表, 那麼這個操作就可以在onCreate()方法中執行
如果希望在數據庫升級的時候做類似修改表添加表的操作, 可以在onUpgrade()方法中執行
*** 4.增刪改查
execSQL()方法可以進行增刪改操作
rawQuery()執行查詢操作, 得到Cursor, 調用moveToNext()判斷是否包含數據, 調用getString(), getInt()等方法獲取數據
insert(), delete(), update(), query() 四個方法內部也是調用execSQL()和rawQuery()的, 它們在ContentProvider中使用更方便(明天講)
* 5.事務管理
beginTransaction() 開啟事務
setTransactionSuccessful() 設置事務成功標記
endTransaction() 結束事務.

事務結束的時候, 會把最後一個成功標記之前的操作提交, 成功標記之後的操作回滾


代碼:Accout.java

package domain;

public class Account {

	private Integer id ;
	private String name;
	private Integer balance ;
	public Account(Integer id, String name, Integer balance) {
		super();
		this.id = id;
		this.name = name;
		this.balance = balance;
	}
	public Account() {
		super();
	}
	public Integer getId() {
		return id;
	}
	public Account(String name, Integer balance) {
		super();
		this.name = name;
		this.balance = balance;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getBalance() {
		return balance;
	}
	public void setBalance(Integer balance) {
		this.balance = balance;
	}
	@Override
	public String toString() {
		return "Account [id=" + id + ", name=" + name + ", balance=" + balance + "]";
	}
	
	
	
	
	
}

AccountDao.java

package com.oterman.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.oterman.mysqlite.MySQLiteOpenHelper;

import domain.Account;

public class AccountDao {
	private Context context;
	
	
	public AccountDao(Context context) {
		this.context = context;
	}

	public void insert(Account a){
		//獲取數據庫;
		MySQLiteOpenHelper helper=new MySQLiteOpenHelper(context);
		SQLiteDatabase db=helper.getWritableDatabase();
		//操作數據庫;
		db.execSQL("insert into account values(null,?,?)",new Object[]{a.getName(),a.getBalance()});
		//關閉數據庫;
		db.close();
	}
	//刪除記錄;
	public void delete(int i) {
		MySQLiteOpenHelper helper=new MySQLiteOpenHelper(context);
		SQLiteDatabase db=helper.getWritableDatabase();//獲取數據庫;
		db.execSQL("delete from account where _id=?",new Object[]{i});
		db.close();
	}
	
	//修改數據庫;
	public void update(){
		MySQLiteOpenHelper helper=new MySQLiteOpenHelper(context);
		SQLiteDatabase db=helper.getWritableDatabase();
		db.execSQL("update account set balance=? where _id



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved