android关于数据库SQLite的简单使用

之前不想写博客,觉得麻烦,每次要用的时候去网上查一下一大堆,但是有时候想去翻一下某个知识点的时候,有时候又觉得每次都去找,还是浪费时间,所以觉得还是写一下,以后用起来方便一些。

今天想试下数据库,之前都写烂了,但是,几个月的RN下来,一直都是用的AsyncStorage这个类,所以数据库就有点遗忘了,然后自己写了一遍常用方法,运行的时候直接就炸了,这个错误提示是查询方法错误,然后去看了一下自己的代码,发现是这样的“Cursor cursor=database.rawQuery("select * from (where name =?),new String[]{name})”,看了一下,觉得这个括号有点怪怪的,然后就把括号删除了,然后查询就没有问题,其他的功能也没有什么问题,觉得记忆还是可以,还记得八九分。


先看下SQLiteOpenHelper这个类吧,我们需要自己定义一个类去实现这个抽象类,里面有两个方法需要我们重写1、onCreate方法用于创建表,可以根据需要创建多个表,2、onUpgrade方法是用于版本更新,可以不做处理。此外还有一个需要说明的地方是,SQLiteOpenHelper这个类,没有无参构造,所以需要创建一个构造函数,不过会有自动提示,为了使用方便,我们选择一个四参构造函数,本来构造函数是四参的,被我简化过后就只剩一个上下文对象。在super中可以看出这里面的四个参数本应该与上面对应,我只是把上面的后三个参数去掉了,第二个参数是数据库名称,第三个参数本来是CursorFactory游标对象,我们使用null代替,第四个参数是版本号。好了,SQLiteOpenHelper的继承就搞定了。

package trypost.dafeng.com.studyforever.sql;

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

/**
 * Created by asus on 2017/8/21.
 */
public class MySql extends SQLiteOpenHelper {
    public static String TB_NAME="LiuZhiDan.db";
    public MySql(Context context) {
        super(context, TB_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table user(name text,password text)");
    }

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

    }
}

下面再来看下实际的用法,

1:增加对象,

/**
 *
 * @param user 新增的对象
 */
public void addUser(User user){
    ArrayList<User> list=searchAllUser();//下文的查询数据库全部数据的方法,如果没有查询到对象,那么list长度为0
    if (list.contains(user)){//关于User类中已经重写了hashCode和equal方法,并且只认定了name,即用户名作为唯一标识。
        Toast.makeText(context,"你所添加的用户已经存在",Toast.LENGTH_SHORT).show();
        return;//用于去重
    }
    values.put("name",user.getName());
    values.put("password",user.getPassword());
    database.insert("user",null,values);
    values.clear();
}

2、删除对象

/**
 *
 * @param name 删除对象的名称
 */
public void deleteUser(String name){
    database.delete("user","name=?",new String[]{name});
}

3、修改对象

/**
 *
 * @param oldName 要修改的名称
 * @param newName 修改后的名称
 */
public void updateUser(String oldName,String newName){
    User user=searchUser(oldName);
    values.put("name",newName);
    values.put("password",user.getPassword());
    database.update("user",values,"name=?",new String[]{oldName});
    values.clear();
}

4、查询某个对象

/**
 *
 * @param name 要查询对象的名称
 * @return 查询单个对象,查询不到数据,返回空对象
 */
public User searchUser(String name){
    Cursor cursor=database.rawQuery("select * from user where name = ?",new String[]{name});
    //Cursor cursor=database.query("user",new String[]{"name","password"},"name = ?",new String[]{"张三"},null,null,null);
    if (cursor!=null){
        while (cursor.moveToNext()){
            String userName=cursor.getString(cursor.getColumnIndex("name"));
            String userPassword=cursor.getString(cursor.getColumnIndex("password"));
            return new User(userName,userPassword);
        }
    }
    return null;
}

5、查询整张表的数据

/**
 *
 * @return  查询所有对象,若user表为空,返回的集合不为空,但长度为0.
 */
public ArrayList<User> searchAllUser(){
    ArrayList<User> list=new ArrayList<>();
    Cursor cursor=database.rawQuery("select * from user",null);
    if (cursor!=null){
        while (cursor.moveToNext()){
            String name=cursor.getString(cursor.getColumnIndex("name"));
            String password=cursor.getString(cursor.getColumnIndex("password"));
            list.add(new User(name,password));
        }
    }
    return list;
}

 结束语,基本功能就这些了,愿你有所收获。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值