安卓下sqlite数据库的操作

来源:互联网 发布:淘宝卖家说给补偿5元 编辑:程序博客网 时间:2024/06/06 03:33

首先我们去继承SQLiteOpenHelper  并实现这几个方法


public class DbHelp extends SQLiteOpenHelper{
   / /构造方法(第一个上下文,第二个我们想创建数据库的名称,第三个是一个游标工厂对象,第四个时版本号)
    public DbHelp(Context context) {
        super(context, "kang.db", null, 1);
        // TODO Auto-generated constructor stub
    }
   //当数据库第一次被创建的时候所调用的方法  该方法只会执行一次
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("create table kang( _id integer primary key, xuehao varchar(20), name varchar(20), age integer);");
    }
   // 当数据库更新的时候所调用的方法也就是说 在构造方法中的版本号发生改变的时候  调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        
    }

}

这时我们的数据库已经创建好啦,我们现在去操作它,

public class DbDao {//对数据库操作的类
    private DbHelp dbhelp;
    //构造方法  我们去new一个上面我们写的类  创建一个数据库 和一个表
    public DbDao(Context context) {
        
        dbhelp=new DbHelp(context);
    }

    // 我们去插入一个 数据  sql语句 insert into kang (xuehao,name,age) values(?,?,?);   ?占位符

    public void insert(StuData stu) {
        SQLiteDatabase db=dbhelp.getWritableDatabase();
        if (db.isOpen()) {
            db.execSQL("insert into kang (xuehao,name,age) values(?,?,?);", new Object[]{stu.getSix(),stu.getName(),stu.getAge()});
           db.close();
        }
        
    }

// 删除一个数据 sql语句  delete from kang where xuehao=?;

    public void delete(String id) {
        SQLiteDatabase db=dbhelp.getWritableDatabase();
        if (db.isOpen()) {
            db.execSQL("delete from kang where xuehao=?;", new String[]{id});
            db.close();
        }
        
        
    }

  //更新一个数据  sql语句  update kang set name=? where xuehao=?;

    public void updata(String name,String id) {
        SQLiteDatabase db=dbhelp.getWritableDatabase();
        if (db.isOpen()) {
            db.execSQL("update kang set name=? where xuehao=?;", new String[]{name,id});
            db.close();
        }
        
        
    }


 //  查询全部  sql语句 select xuehao,name,age from kang;

    public List<StuData> queryAll(){
        List<StuData> lsDatas=new ArrayList<StuData>();
        SQLiteDatabase db=dbhelp.getReadableDatabase();
        if (db.isOpen()) {
            Cursor cursor=db.rawQuery("select xuehao,name,age from kang;", null);
            if (cursor!=null&&cursor.getCount()>0) {
                while (cursor.moveToNext()) {
                  String xuehao= cursor.getString(0);
                    String name=cursor.getString(1);
                    int age=cursor.getInt(2);
                    lsDatas.add(new StuData(name,xuehao,age));
                }
            }
            cursor.close();
            db.close();
            return lsDatas;
        }
        db.close();
        return null;
    }

   //查询符合条件的    select xuehao,name,age from kang where xuehao=?;

    public StuData queryitem(String xue){
        StuData stuData;
        SQLiteDatabase db=dbhelp.getReadableDatabase();
        if (db.isOpen()) {
            Cursor cursor=db.rawQuery("select xuehao,name,age from kang where xuehao=?", new String[]{xue});
            if (cursor!=null&&cursor.moveToFirst()) {
                 String xuehao= cursor.getString(0);
                    String name=cursor.getString(1);
                    int age=cursor.getInt(2);
                    stuData=new StuData(name, xuehao, age);
                    cursor.close();
                    db.close();
                    return stuData;
            }
            
            
        }
        return null;
        
    }
}


sql 语句 后面是? 所对应的值  一一对应  

还有 cursor游标 它帮助我们去查找 cursor.moveToNext()    移动到下一行

0 0