Android学習6週目_SQLiteとContentProvider
一、SQLite
1、基本概念SQLiteは軽量級、独立、隔離、プラットフォーム間、多言語インタフェース、安全性の高い関係型データベースであり、主に組み込み機器に用いられ、AndroidのデータベースはSQLiteデータベースを使用する.2、データベースの作成1)クラスの作成
2)DataBaseHelperの作成方法
3)SQLiteOpenHelperのonCreateとonUpgradeの書き換え方法
3、操作データベース1)作成したデータベースをMainActivityで呼び出す
2)作成したデータベースにデータを追加する
3)データの削除
4)データの更新
5)データの最適化元のSQL文の実行効率がより高いrawQuery execSQL; は有用な列、有用な行のみを検索し、少ないほど良い. データが多い場合は、ソートが必要です. は、データが多い場合にインデックスを作成する必要があるため、検索が容易であるため、インデックスを作成します. 一度に多くのデータを処理する場合は、物事処理 を使用する必要がある.
事物処理のコードは以下の通りである.
6)ORMオブジェクトリレーションシップマッピングは、複雑なsql文を操作するのではなく、オブジェクトのプロパティとメソッドを直接操作することで、簡単なデータベースにとって良い選択です.
二、ContentProvider
1、基本的な概念アプリケーション間でデータを共有する方法 は、データの格納および取得のための統合インタフェース を提供する. Androidは、一般的なデータの一部にデフォルトのContentProvider を提供しています. Uri、汎用リソース識別子 2、ContentProviderのインタフェース
3、実例
三、まとめ
この章はよくわかりませんが、練習が必要です.
1、基本概念SQLiteは軽量級、独立、隔離、プラットフォーム間、多言語インタフェース、安全性の高い関係型データベースであり、主に組み込み機器に用いられ、AndroidのデータベースはSQLiteデータベースを使用する.2、データベースの作成1)クラスの作成
public class DataBaseHelper extends SQLiteOpenHelper
2)DataBaseHelperの作成方法
public DataBaseHelper(Context context){
super(context,DATABASE_NAME,null,1);
}
3)SQLiteOpenHelperのonCreateとonUpgradeの書き換え方法
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + USER_TABLE_NAME +" "+ "(" + USERNAME + " varchar(20) not null," + PASSWORD + " varchar(32) not null," + STATE + " boolean not null)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion) {
String sql = "drop table if exists" + USERNAME;
db.execSQL(sql);
this.onCreate(db);
}
}
3、操作データベース1)作成したデータベースをMainActivityで呼び出す
DatabaseHelper databaseHelper = new DatabaseHelper(this);
mSqLiteDatabase = databaseHelper.getWritableDatabase();
2)作成したデータベースにデータを追加する
private void addData() {
// IO ,
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseHelper.USERNAME, "xxxx");
contentValues.put(DatabaseHelper.AGE, "119");
long rowNumber = mSqLiteDatabase.insert(DatabaseHelper.USER_TABLE_NAME, null , contentValues);
if(rowNumber != -1){
Toast.makeText(DatabaseButtonActivity.this, " ", Toast.LENGTH_SHORT).show();
}
}
3)データの削除
// delete:
String whereClauseString = "username=?";
String[] whereArgsString = {"xxxx"};
mSqLiteDatabase.delete(DatabaseHelper.USER_TABLE_NAME, whereClauseString, whereArgsString);
4)データの更新
//update
ContentValues mContentValues = new ContentValues();
mContentValues.put("age","10");
whereClauseString = "username=?";
sqLiteDatabase.update("user",contentValues,whereClauseString,whereArgsString);
5)データの最適化
事物処理のコードは以下の通りである.
// db
mSqLiteDatabase.beginTransaction();
try {
//
for (int i = 0; i < 1000; i++) {
mSqLiteDatabase.execSQL("insert into user(username, age) values ('liu da ming','5 ')");
}
mSqLiteDatabase.setTransactionSuccessful();
//
} catch (Exception e) {
e.printStackTrace();
} finally {
mSqLiteDatabase.endTransaction();
}
6)ORMオブジェクトリレーションシップマッピングは、複雑なsql文を操作するのではなく、オブジェクトのプロパティとメソッドを直接操作することで、簡単なデータベースにとって良い選択です.
二、ContentProvider
1、基本的な概念
public class TestContentProvider extends ContentProvider {
@Override
public boolean onCreate() {
return false;
}
@Nullable
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
return null;
}
@Nullable
@Override
public String getType(Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(Uri uri, ContentValues values) {
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
return 0;
}
}
3、実例
public class TestContentProvider extends ContentProvider {
private static UriMatcher sUriMatcher;
public static final int URI_MATCH_USER = 1;
static {
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(URIList.AUTHORITY,DatabaseHelper.USER_TABLE_NAME,URI_MATCH_USER);
}
private DatabaseHelper mDatabaseHelper;
@Override
public boolean onCreate() {
mDatabaseHelper = new DatabaseHelper(getContext());
return false;
}
@Nullable
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
String tablename = getTableName(uri);
if(TextUtils.isEmpty(tablename)){
return null;
}
Cursor cursor = mDatabaseHelper.getReadableDatabase().query(tablename,projection,selection,selectionArgs,null,null,sortOrder);
return cursor;
}
@Nullable
@Override
public String getType(Uri uri) {
return null;
}
@Nullable
@Override
public Uri insert(Uri uri, ContentValues values) {
String tablename = getTableName(uri);
if(TextUtils.isEmpty(tablename)){
return null;
}
long id = mDatabaseHelper.getWritableDatabase().insert(tablename,null,values);
return ContentUris.withAppendedId(uri,id);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
String tablename = getTableName(uri);
if(TextUtils.isEmpty(tablename)){
return -1;
}
int count = mDatabaseHelper.getWritableDatabase().delete(tablename,selection,selectionArgs);
return count;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
String tablename = getTableName(uri);
if(TextUtils.isEmpty(tablename)){
return -1;
}
int count = mDatabaseHelper.getWritableDatabase().update(tablename,values,selection,selectionArgs);
return count;
}
private String getTableName(Uri uri){
int type = sUriMatcher.match(uri);
String tablename = null;
switch (type){
case URI_MATCH_USER:
tablename = DatabaseHelper.USER_TABLE_NAME;
break;
}
return tablename;
}
}
三、まとめ
この章はよくわかりませんが、練習が必要です.