日期:2014-05-16  浏览次数:20463 次

SQLiteDatabase 使用

SQLiteDatabase

?

[功能]

SQLiteDatabase 是关于数据库操作的 可用于 insert delete update query 等操作 可惜美中不足的是:

1. 其不支持创建数据库

2. 其不支持版本更新 或者说其不知道如何做 因为具体数据的差异

?

鉴于以上的缺陷 有一个辅助类可以完成上面功能 那就是:SQLiteOpenHelper

?

?

[代码]

1. 定义SQLiteOpenHelper 并完成 创建 更新 功能

public class DBHelper extends SQLiteOpenHelper {
    
    public static final String TB_NAME = "mycountry";
    public static final String ID = "_id";
    public static final String COUNTRY = "country";
    public static final String CODE = "code";
    
    
    public DBHelper(Context context, String name, 
            CursorFactory factory,int version) {
        super(context, name, factory, version);
    }

    public void onCreate(SQLiteDatabase db) {
        
    	db.execSQL("CREATE TABLE IF NOT EXISTS " 
                + TB_NAME + " (" 
        		+ ID + " INTEGER PRIMARY KEY," 
        	    + COUNTRY + " VARCHAR,"
        	    + CODE + " INTEGER)");
    }

    public void onUpgrade(SQLiteDatabase db, 
            int oldVersion, int newVersion) {
        
        db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);
        onCreate(db);
    }
}

?

?

?

?

2. 从SQLiteOpenHelper 得到SQLiteDatabase的实例

DBHelper helper = new DBHelper(this, DB_NAME, null, VERSION);

SQLiteDatabase db = helper.getWritableDatabase();

?

?

?

3. SQLiteDatabase 的一些操作:

* 插入数据:

ContentValues values = new ContentValues();
        values.put(DBHelper.COUNTRY, "中国");
        values.put(DBHelper.CODE, 86);
        db.insert(DBHelper.TB_NAME,DBHelper.ID, values);

?

?

* 改动数据

db.insert(DBHelper.TB_NAME,DBHelper.ID,null);
        values.clear();
        values.put(DBHelper.COUNTRY, "意大利");
        values.put(DBHelper.CODE, 39);
        db.update(DBHelper.TB_NAME, values,DBHelper.ID + " = 2",null);

?

* execSQL 执行SQL语言

db.execSQL("INSERT INTO "
                + DBHelper.TB_NAME + "("
                + DBHelper.COUNTRY + ","
                + DBHelper.CODE + ") VALUES "
                + "('洪都拉斯',504)");

?

* 查询数据

Cursor c = db.query(DBHelper.TB_NAME,null,null,null,null,null,
        		DBHelper.CODE+" DESC");

?

* 删除数据所有数据

db.delete(DBHelper.TB_NAME,null,null);

?

?

?

?

done!

1 楼 zzsczz 2010-01-21  
用otl的漂过。。
2 楼 gryphone 2010-01-23  
zzsczz 写道
用otl的漂过。。

no idea on this~~~
3 楼 wuliupo 2010-01-25  
请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
谢谢!
4 楼 gryphone 2010-01-25  
wuliupo 写道
请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
谢谢!

wuliupo 写道
请问您的Android开发环境是怎么搭建的,下面这些包/类来自那里啊
import android.content.Context