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);
具体的なテンプレートコードは次のとおりです.
データベースを作成すると、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)
3.delete文
(1)db.execSQL("delete from person where id=?",new
Object[]{id});
(2)db.delete("tablename","id=?",new String[]{id+""});
4.update文
(1)
(2)
5.query文
(1)
(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)
(2)
db.query("person",new String[]{"count(*)"},null,null,null,null,null,null);
三、取引操作
テンプレートコードは次のとおりです.
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();
}