android SQLite的使用

Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。

1、要使用Android SQLite必须要继承一个类——SQLiteOpenHelper。

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    /**
     *  构造方法
     * @param context 上下文
     * @param name  数据库的名称
     * @param factory 游标工厂 一般默认为null
     * @param version 数据库版本
     */
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    //只有数据库创建的时候调用,适合创建数据库的表结构
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table contact(_id integer primary key autoincrement ," +
                "cname varchar(10), telephone varchar(10))");
    }

    //只有数据库的版本更新的时候执行,适合修改数据库的表的结构
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

2.数据库操作工具类。

public class DBUtils {

    private static MySQLiteOpenHelper helper;
    private static DBUtils dbUtils ;
    //表的名称
    public static final String table_contact = "contact" ;
    private SQLiteDatabase db ;

    public DBUtils(Context context) {
        helper = new MySQLiteOpenHelper(context,"contacts.db",null,1);
        db = helper.getWritableDatabase();
    }
    /**
     *  单利模式创建数据库
     * @param context
     * @return
     */
    public static synchronized DBUtils getInstance(Context context){
        if(dbUtils == null){
            dbUtils = new DBUtils(context);
        }
        return dbUtils;
    }

    /**
     *  增加数据
     * @param name 联系人名称
     * @param number 电话号码
     */
    public void addData(String name ,String number){
        ContentValues values = new ContentValues();
        values.put("cname", name); // KEY 是列名,vlaue 是该列的值
        values.put("telephone", number); // KEY 是列名,vlaue 是该列的值

        // 参数一:表名,参数三,是插入的内容
        // 参数二:只要能保存 values 中是有内容的,第二个参数可以忽略
        db.insert(table_contact, null, values);

    }

    /**
     * 根据联系人名字删除联系人
     * @param name 联系人名字
     */
    public void deleteData(String name){
        String whereClause="cname = ?"; //条件
        String[] whereArgs={name};          //条件参数
        db.delete(table_contact,whereClause,whereArgs);
    }

    /**
     *  根据联系人名称修改电话号码
     * @param name 联系人
     * @param number 号码
     */
    public void updateData(String name ,String number){
        ContentValues values = new ContentValues();
        values.put("telephone",number);
        String whereClause = "name = ?"; //条件
        String[] whereArgs = {name} ;    //条件参数
        db.update(table_contact,values,whereClause,whereArgs);
    }

    /**
     * 查询所有数据
     */
    public void queryData(){
        String[] columns={"cname","telephone"};
        String selection = null; //选择的条件
        String[] selectionArgs = null; //选择条件的参数
        String groupBy = null;  //组别
        String having = null;   //传递NULL将导致所有行组被包含,并且在不使用行分组时需要.。
        String orderBy = null;  //排序
        Cursor cursor = db.query(table_contact, columns, selection, selectionArgs, groupBy, having, orderBy);
        while(cursor.moveToNext()){
            String cname = cursor.getString(cursor.getColumnIndex("cname"));
            String telephone = cursor.getString(cursor.getColumnIndex("telephone"));
            System.out.println("名字:"+cname+" ;   电话:"+telephone);
        }
    }

}

3.在用到的数据库的代码中调用数据库操作。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建数据库
        DBUtils dbUtils = DBUtils.getInstance(this);
    //添加数据
        dbUtils.addData("zhangkefeng","18626255712");
        dbUtils.addData("xiaoqiang","18626255712");

    //查询数据
        dbUtils.queryData();
        //删除数据
        dbUtils.deleteData("zhangkefeng");
        //修改数据
        dbUtils.updateData("xiaoqiang","18137668837");
    }


}

可以在模拟器上运行,在data/data 目录下找到 你的包名 下的database文件夹里找到自己的数据库
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值