android sqlite同时读写,如何创建数据库一次,然后多次读写它,SQLite,OpenHelper,Android...

我做了两个类,扩展Activity的主类和保存数据库及其方法的Database类。下面显示了数据库类的部分代码。如何创建数据库一次,然后多次读写它,SQLite,OpenHelper,Android

SQLiteOpenHelper类是数据库类中的嵌套类。我从我在互联网上找到的一个例子中获得了它。这个嵌套类的内部是方法,

db.execSQL(SCRIPT_CREATE_DATABASE);

如何创建一个新的数据库?如果我从主类实例化数据库类是这样的:

Database db = new Database(this);

这是否实例自动实例嵌套SQLiteOpenHelper类呢?所以我不必明确地做到这一点。

但是对于如何创建数据库的这个例子,我很困惑。如果每次我实例化一个新的实例调用这样的addNewRow()方法:

public void addNewRow(String label, int price){

Database db = new Database(context);

db.openToWrite();

db.insertNewRow(checkBoxStatus, label, price);

db.close();

}

则在“新数据库(上下文)”调用创建一个新的数据库,接下来我添加了信息进入列。最后调用db.close(),但每次我调用上面显示的addNewRow方法时,它都会实例化一个新数据库,并且还会实例化SQLiteOpenhelper类,以便创建一个新数据库。这意味着最后一个数据库已被覆盖,并且我添加的最后一行已丢失,这是正确的吗?

我该如何使用这个数据库类来创建一个数据库只有一次,然后用这样的多个调用从它读取和写入东西?

Database db = new Database(context);

db.openToWrite(); or db.openToRead();

// read or update or create new row in database

db.close();

数据库类:为SQLiteOpenHelper类

public class Database {

public static final String MYDATABASE_NAME = "my_database";

public static final String MYDATABASE_TABLE = "my_table";

public static final int MYDATABASE_VERSION = 1;

public static final String KEY_CHECKBOX_STATUS = "check_box_status";

public static final String KEY_CHECKBOX_LABEL = "check_box_label";

public static final String KEY_PRICE = "price";

//create table MY_DATABASE (ID integer primary key, Content text not null);

private static final String SCRIPT_CREATE_DATABASE =

"CREATE TABLE " + MYDATABASE_TABLE + " (" + "ID INTEGER PRIMARY KEY AUTOINCREMENT, " +

"KEY_CHECKBOX_STATUS INTEGER, " + "KEY_CHECKBOX_LABEL TEXT, " + " KEY_PRICE INTEGER" + ");";

SQLiteDatabase sqLiteDatabase;

SQLiteHelper sqLiteHelper;

Context context;

public Database(Context c){

context = c;

}

// after this all the rest of the methods for get and set of database values

代码,嵌套的数据库类的内部:

public class SQLiteHelper extends SQLiteOpenHelper {

public SQLiteHelper(Context context, String name,

CursorFactory factory, int version) {

super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

db.execSQL(SCRIPT_CREATE_DATABASE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

}

}

2013-04-12

Kevik

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值