android SQLite

SQLite文件保存在/data/data/(packagename)/databases

SQLite中的基本数据类型有NULL(空值)、INTEGER(整型)、REAL(浮点型)、TEXT(字符串)、BLOB(二进制对象)。

当向数据库中插入记录时,它会判断所插入的数据类型和该列的类型是否一致,若不一致,则数据库会尝试将数据转化为该列的类型,若无法转化,则以其自身类型存储。

在android,SQLiteOpenHelper类使我们对数据库的操作变得简便。

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper{

    private static final int VERSIONM=1;
    private final String CREATE_TABLE="create table if not exists tb_info"+
        "(_id integer primary key autoincrement,name text not null)";


    public DBHelper(Context context,String name){
        this(context,name,null,VERSIONM);
    }

    public DBHelper(Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
    }

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

    }
}

onCreate方法在第一次创建的时候调用,onUpgrade在数据库版本更新时调用。

 

简单的增删查改操作:

        SQLiteDatabase db = new DBHelper(this, "db_info").getWritableDatabase();

        //添加记录
        ContentValues values = new ContentValues();
        values.put("name", "zhangsan");
        db.insert("tb_info", null, values);

        //修改记录
        values.put("name", "wangwu");
        db.update("tb_info", values, "_id>=?", new String[]{"1"});

        //删除记录
        db.delete("tb_info", "_id>?", new String[]{"3"});

        //查询
        Cursor c = db.query("tb_info", new String[]{"_id", "name"}, null, null, null, null, null);
        if (c != null) {
            String[] cols = c.getColumnNames();
            while (c.moveToNext()) {
                for (String ColumnName : cols) {
                    Log.i("logInfo", ColumnName + ":" + c.getString(c.getColumnIndex(ColumnName)));
                }
            }
            c.close();
        }
        
      //分页
        Cursor cursor =  db.rawQuery("SELECT * FROM person ORDER BY personid ASC LIMIT= ?,?",
        new String[]{String.valueOf(offset),String.valueOf(maxResult)});
        while(cursor.moveToNext()){
       
         }

        db.close();

 

SQLite事务:

为了确保某一组操作要么全部完成,否则回滚至初始状态,需用到此操作。

        SQLiteDatabase db = new DBHelper(this, "db_info").getWritableDatabase();
        db.beginTransaction();
        try {
            db.……
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }
        db.close();

 

 

 

posted @ 2016-03-06 21:03  maozs  阅读(218)  评论(0)    收藏  举报