資料庫是程式設計中一種不可或缺的夥伴
我剛開始學寫Android時也是本想打死看能不能不要需要資料庫
結果當然是"不可能"XD,該面對的還是要面對-.-
所以就開始研究起SQLite,後來覺得它一點也不難
總結一下研究後的感想:
1.沒有像MS-SQL有專屬操作介面可以看(網上有其他軟體可以找來用)
2.開發Android時不需要安裝,直接叫用就可以了
3.都是以單一檔案的方式存在,一支應用程式對應一個db檔
4.db存放路徑在:/data/data/
5.支援大多數的SQL指令
6.最大支援到2T bytes
以上是我研究後的心得,感覺上不是很難,只是沒介面使用上有點難而已
不過應該也還好。
基本介紹完了,下面我們來實作看看怎麼使用SQLite在Android應用程式內
創建資料庫:
必須先建立一個SQLiteOpenHelper的class類別
package jim.memorandum;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class NewListDataSQL extends SQLiteOpenHelper {
//資料庫版本關係到App更新時,資料庫是否要調用onUpgrade()
private static final int VERSION = 1;//資料庫版本
//建構子
public NewListDataSQL(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}
public NewListDataSQL(Context context,String name) {
this(context, name, null, VERSION);
}
public NewListDataSQL(Context context, String name, int version) {
this(context, name, null, version);
}
//輔助類建立時運行該方法
@Override
public void onCreate(SQLiteDatabase db) {
String DATABASE_CREATE_TABLE =
"create table newMemorandum("
+ "_ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+ "date VARCHAR,"
+ "note VARCHAR,"
+ "pw VARCHAR,"
+ "reminder INT,"
+ "type VARCHAR,"
+ "memo VARCHAR"
+ ")";
db.execSQL(DATABASE_CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//oldVersion=舊的資料庫版本;newVersion=新的資料庫版本
db.execSQL("DROP TABLE IF EXISTS newMemorandum"); //刪除舊有的資料表
onCreate(db);
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
// TODO 每次成功打開數據庫後首先被執行
}
@Override
public synchronized void close() {
super.close();
}
}
當你在activity中調用建構子NewListDataSQL時,程式自己會去判斷
Activity中呼叫資料庫
package jim.memorandum;
//import進兩個database需要用到的
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class MemorandumActivity extends Activity {
//SQLiteDatabase對象
SQLiteDatabase db;
//資料庫名
public String db_name = "MemorandumSQL";
//表名
public String table_name = "newMemorandum";
//輔助類名
NewListDataSQL helper = new NewListDataSQL(MemorandumActivity.this, db_name);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//以輔助類獲得資料庫對象
db = helper.getReadableDatabase();
注意:一個應用程式只允許對應一個db檔,所以資料庫名稱新增後就不能修改,不然程式會自動創立另一個db檔。資料庫查詢指令
//取得備忘資料
public String[] myNote(){
Cursor cursor = db.rawQuery("select note from newMemorandum ORDER BY _ID DESC", null);
//用陣列存資料
String[] sNote = new String[cursor.getCount()];
int rows_num = cursor.getCount();//取得資料表列數
if(rows_num != 0) {
cursor.moveToFirst(); //將指標移至第一筆資料
for(int i=0; i<rows_num; i++) {
String strCr = cursor.getString(0);
sNote[i]=strCr;
cursor.moveToNext();//將指標移至下一筆資料
}
}
cursor.close(); //關閉Cursor
//dbHelper.close();//關閉資料庫,釋放記憶體,還需使用時不要關閉
return sNote;
}
我是寫個function去資料庫中查詢資料,"_ID"是PRIMARY KEY
基本上SQLite資料庫應用的建立及查詢就是這樣而已,還蠻簡單的,後面再介紹新增、修改、刪除的資料庫操作。
複製請註明出處,Android 手機資料庫(一) - SQLite 基本介紹、創建及查詢,謝謝。












