Hello Android-SQLiteデータベース操作
Androidに内蔵されているのはSQLiteの小型データベースで、accessのようにファイル方式で存在し、操作が便利です.AndroidオペレーションSQLiteは、SQLiteOpenHelperから接続を取得するために継承する必要があります.2つの方法を実現した:onCreateとonUpgrade.初めてデータベースの読み取りまたは書き込み操作を取得したときにonCreateを呼び出すので、データテーブルを作成する文を書きます.データベースバージョンが変更されるとonUpgradeが呼び出されるので、テーブル構造が変更された場合はここで変更します.
次のコードはSQLiteOpenHelperを継承し、自分でいくつかの添削方法を書いて、データベースに対して操作するDAOモジュールを継承して、後でデータベースを操作してこのjavaファイルで基本的にOKになります.
関与するbean
次のコードはSQLiteOpenHelperを継承し、自分でいくつかの添削方法を書いて、データベースに対して操作するDAOモジュールを継承して、後でデータベースを操作してこのjavaファイルで基本的にOKになります.
package cn.itcast.service;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper {
private static final String DATABASENAME = "test.db"; //
private static final int DATABASEVERSION = 1;// , 0
public DBOpenHelper(Context context) {
super(context, DATABASENAME, null, DATABASEVERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20), amount integer)");// sql
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS person");
onCreate(db);
}
public void payment(){
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();//
try{
db.execSQL("update person set amount=amount-10 where personid=?", new Object[]{1});
db.execSQL("update person set amount=amount+10 where personid=?", new Object[]{2});
db.setTransactionSuccessful();// ,
}finally{
db.endTransaction();
}
}
public void save(Person person){
// , ,
SQLiteDatabase db = getWritableDatabase();
db.execSQL("insert into person (name,amount) values(?,?)",
new Object[]{person.getName(),person.getAmount()});
}
public void update(Person person){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("update person set name=? where personid=?",
new Object[]{person.getName(),person.getId()});
}
public void delete(Integer id){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("delete from person where personid=?", new Object[]{id.toString()});
}
public Person find(Integer id){
// ,
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person where personid=?", new String[]{id.toString()});//
if(cursor.moveToFirst()){
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int amount = cursor.getInt(cursor.getColumnIndex("amount"));
Person person = new Person(personid, name);
person.setAmount(amount);
return person;
}
return null;
}
public List<Person> getScrollData(Integer offset, Integer maxResult){
List<Person> persons = new ArrayList<Person>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person limit ?,?",
new String[]{offset.toString(), maxResult.toString()});
while(cursor.moveToNext()){
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int amount = cursor.getInt(cursor.getColumnIndex("amount"));
Person person = new Person(personid, name);
person.setAmount(amount);
persons.add(person);
}
cursor.close();
return persons;
}
public Cursor getCursorScrollData(Integer offset, Integer maxResult){
SQLiteDatabase db = getReadableDatabase();
return db.rawQuery("select personid as _id, name, amount from person limit ?,?",
new String[]{offset.toString(), maxResult.toString()});
}
public long getCount() {
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("select count(*) from person", null);
cursor.moveToFirst();
return cursor.getLong(0);
}
}
関与するbean
class Person {
private Integer id;
private String name;
private Integer amount;
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
public Person(){}
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [amount=" + amount + ", id=" + id + ", name=" + name
+ "]";
}
}