Android入門:SQLite

3772 ワード

一、SQLite紹介
SQLiteはAndroidに組み込まれた小型のデータベースです.ドライバを導入する必要はありません.
SQLite可視化ツール:SQLite Expert Professional 3;
二、AndroidアクセスSQLite
主な手順:
(1)クラス継承SQLiteOpenHelperを作成し、書き換える
--Contextパラメータ付きコンストラクション関数;
//データベース作成用
-- onCreate(SQLiteDatabase db);
//データベース作成時に呼び出す
-- onUpgrade(SQLiteDatabase db,int old,int newversion);//データベースバージョン変更時に呼び出す
(2)データベースの作成:SQLiteDatabase db=helper.getWritableDatabase();
(3)SQL文:db.execSQL(String sql);
具体的なテンプレートコードは次のとおりです.
package org.xiazdong.db.util;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper{
	private static final String TAG = "DatabaseHelper";
	private static  int VERSION = 1;
	public DatabaseHelper(Context context) {
		super(context, "test.db", null, VERSION);
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table   ");
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		Log.i(TAG, "    ...");
	}
}

データベースを作成すると、databaseは/data/data/package/databasesディレクトリに格納されます.
1.データベースを開く
SQLiteDatabase db = helper.getWritableDatabase();
SQLiteDatabase db = helper.getReadableDatabase();
//この関数の内部にはgetWritableDatabase()関数も呼び出されています.つまり、この関数を呼び出すか、データを書くこともできます.
2.insert文
(1)db.execSQL("insert into person(name,age) values(?,?)",new Object[]{"xiazdong",20});
(2)
ContentValues values = new ContentValues();
values.put("name","xiazdong");
values.put("age",20);
db.insert("tablename",null,values);

3.delete文
(1)db.execSQL("delete from person where id=?",new
Object[]{id});
(2)db.delete("tablename","id=?",new String[]{id+""});
4.update文
(1)
db.exeSQL("update person set age=? where name=?",new Object[]{30,"xiazdong"});

(2)
ContentValues values = new ContentValues();
values.put("age",30);/*set  */
db.update("tablename",values,"name=?"/*where  */,new String[]{"xiazdong"}/*where    */);

5.query文
(1)
Cursor cursor = db.rawQuery("select * from person where name=?",new Object[]{"xiazdong"});
while(cursor.moveToNext()){
    //int index = cursor.getColumnIndex(String name);//  name    
    //String name = cursor.getString(int index);    //       
    String name = cursor.getString(cursor.getColumnIndex("name")); 
}

(2)
Cursor cursor = db.query("tablename",null
/*はselect**/、「name=?」
/*where文*/,new String[]{"xiazdong"},null
/*group by文*/,null
/*having文*/,null
/*order by文*/,null
/*limit文*/);
6.ページング文
Cursor cursor = db.rawQuery("select * from person limit ?,?",new Object[]{5,5});//最初の5は5つのレコードをスキップし、次の5はクエリ結果のレコード数
while(cursor.moveToNext()){
    String name = cursor.getString(cursor.getColumnIndex("name")); 
}
7.レコード個数文を取得する
(1)
Cursor cursor = db.rawQuery("select count(*) from person", null);
cursor.moveToFirst();
int count = cursor.getInt(0);

(2)
db.query("person",new String[]{"count(*)"},null,null,null,null,null,null);
三、取引操作
テンプレートコードは次のとおりです.
db.beginTransaction();
try{
	//    
	db.setTransactionSuccessful();//      ,  db.endTransaction()     
}
finally{
	db.endTransaction();
}