Android下SQLiteの使用
8581 ワード
今日はandroidの下のsqliteを勉強しました.
知識記録:
1.SQLiteOpenHelper
SQliteOpenHelperは、データベースの作成とバージョンの管理を管理する抽象クラスです.使用するには、nCreate(SQLiteDatabase)、onUpgrade(SQLiteDatabase、int、int)メソッドを実装する必要があります.
onCreate:データベースが最初に確立されたときに実行されます.たとえば、テーブルの作成、データの初期化などです.
onUpgrade:データベースを更新する必要がある場合に実行します.たとえば、長いテーブルを削除したり、新しいテーブルを作成したりします.
ステップ1:クラス継承の作成
コードは次のとおりです.
ステップ2:daoクラスを作成する
中は原生のsql文で操作することができて、apiを通じて(通って)、私のここの使うのはapiです
権限不足を防ぐための代替措置を目的としています
知識記録:
1.SQLiteOpenHelper
SQliteOpenHelperは、データベースの作成とバージョンの管理を管理する抽象クラスです.使用するには、nCreate(SQLiteDatabase)、onUpgrade(SQLiteDatabase、int、int)メソッドを実装する必要があります.
onCreate:データベースが最初に確立されたときに実行されます.たとえば、テーブルの作成、データの初期化などです.
onUpgrade:データベースを更新する必要がある場合に実行します.たとえば、長いテーブルを削除したり、新しいテーブルを作成したりします.
ステップ1:クラス継承の作成
SQLiteOpenHelper
コードは次のとおりです.
package com.zaizai.sqlite;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by AnJie on 2015/10/8.
*/
public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
private static final String databases_name = "mydatabase.db";
private static final String databases_table = "person";
private static final int databases_version = 1;
private static final String KEY_ID = "_id";
/* */
private static final String databases_create = "create table person ( _id integer primary key autoincrement,name varchar(20),age integer);";
/**
*
* @param context
*
* name
* factory
* version 1
*/
public PersonSQLiteOpenHelper(Context context) {
super(context, databases_name, null, 5);
}
/**
* @param context
* @param name
* @param factory
* @param version
*/
public PersonSQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public PersonSQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
/**
* .
*
* :
* create table person(
* _id integer primary key,
* name varchar(20),
* age integer
* );
*/
@Override
public void onCreate(SQLiteDatabase db) {
/* , */
db.execSQL(databases_create);
}
/**
* ,
* ( , , )
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("TaskDBAdapter", "upgrading from version" + oldVersion + "To" + newVersion + ",which will destroy all old data");
/* */
db.execSQL("DROP TABLE IF EXISTS "+databases_table);
/* */
onCreate(db);
}
}
ステップ2:daoクラスを作成する
package com.zaizai.sqlite.dao;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.zaizai.sqlite.PersonSQLiteOpenHelper;
import com.zaizai.sqlite.damin.Person;
import java.util.ArrayList;
import java.util.List;
/**
* Created by AnJie on 2015/10/8.
*/
public class PersonDao {
private static final String TAG = "PersonDao";
private PersonSQLiteOpenHelper myOpenHelper = null;
public PersonDao(Context context) {
this.myOpenHelper = new PersonSQLiteOpenHelper(context);
}
public void inset(Person person) {
/**/
SQLiteDatabase db = null;
try {
db = myOpenHelper.getWritableDatabase();
} catch (Exception e) {
e.printStackTrace();
db = myOpenHelper.getReadableDatabase();
}
/**/
if (db.isOpen()) { // ,
ContentValues values = new ContentValues();
values.put("name", person.getName()); // key , value
values.put("age", person.getAge());
/* value null , Null SQLite null*/
long id = db.insert("person", "name", values);
Log.i(TAG, "id: " + id);
db.close(); //
}
}
/**
* id
*
* @param id
*/
public void delete(int id) {
SQLiteDatabase db = null;
try {
db = myOpenHelper.getWritableDatabase();
} catch (Exception e) {
e.printStackTrace();
db = myOpenHelper.getReadableDatabase();
}
if (db.isOpen()) { // ,
String whereClause = "_id = ?";
String[] whereArgs = {id + ""};
int count = db.delete("person", whereClause, whereArgs);
Log.i(TAG, " : " + count + " ");
db.close(); //
}
}
/**
* id ,
*
* @param id
* @param name
*/
public void update(int id, String name) {
SQLiteDatabase db = null;
try {
db = myOpenHelper.getWritableDatabase();
} catch (Exception e) {
e.printStackTrace();
db = myOpenHelper.getReadableDatabase();
}
if (db.isOpen()) { // ,
ContentValues values = new ContentValues();
values.put("name", name);
int count = db.update("person", values, "_id = ?", new String[]{id + ""});
Log.i(TAG, " : " + count + " ");
db.close(); //
}
}
public List<Person> queryAll() {
SQLiteDatabase db = null;
try {
db = myOpenHelper.getWritableDatabase();
} catch (Exception e) {
e.printStackTrace();
db = myOpenHelper.getReadableDatabase();
}
if (db.isOpen()) {
String[] columns = {"_id", "name", "age"}; //
String selection = null; // , null
String[] selectionArgs = null; // , ?
String groupBy = null; // group by name
String having = null; //
String orderBy = null; //
Cursor cursor = db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy);
int id;
String name;
int age;
if (cursor != null && cursor.getCount() > 0) {
List<Person> personList = new ArrayList<Person>();
while (cursor.moveToNext()) { // , , , .
id = cursor.getInt(0);
name = cursor.getString(1);
age = cursor.getInt(2);
personList.add(new Person(id, name, age));
}
db.close();
return personList;
}
db.close();
}
return null;
}
/**
* id
*
* @param id
* @return
*/
public Person queryItem(int id) {
SQLiteDatabase db = null;
try {
db = myOpenHelper.getWritableDatabase();
} catch (Exception e) {
e.printStackTrace();
db = myOpenHelper.getReadableDatabase();
}
if (db.isOpen()) {
String[] columns = {"_id", "name", "age"}; //
String selection = "_id = ?"; // , null
String[] selectionArgs = {id + ""}; // , ?
String groupBy = null; // group by name
String having = null; //
String orderBy = null; //
Cursor cursor = db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy);
if (cursor != null && cursor.moveToFirst()) { // cursor null,
int _id = cursor.getInt(0);
String name = cursor.getString(1);
int age = cursor.getInt(2);
db.close();
return new Person(_id, name, age);
}
db.close();
}
return null;
}
}
中は原生のsql文で操作することができて、apiを通じて(通って)、私のここの使うのはapiです
db = {
db = .getWritableDatabase()} (e) {
e.printStackTrace()db = .getReadableDatabase()}
権限不足を防ぐための代替措置を目的としています