数据库SQLiteDabaBase

//数据库 1.创建数据库 自定义数据库。 首先定义个自己的数据库类, 用来创建数据库和创建表

public class UserOpenHelper extends SQLiteOpenHelper {//必须继承SQLiteOpenHelper类,

    public UserOpenHelper(Context context) {//这个方法可以自己写,也可以覆写系统的改成一参构造 第二个参数数据库名 第三个是工厂,写null//第4个是版本号,写1    

        super(context, "user.db", null, 1);                          //第一个参数上线文对象,这里不用单独创建成员变量  

                       

                       

                         }

    @Override

    public void onCreate(SQLiteDatabase db) {

        db.execSQL("create table user(username text,pwd text,level text)");  //执行创建表的操作, username 是列名,text代表文本,就是字符串类型

    }

    @Override

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

    } } //以上 当你调用了这个类的构造之后,就创建了一个user.db的数据库,一张 user的表,列有username 数据类型为text,有pwd,数据类型为text,有level 数据类型为text

 

 

共享参数    服务器   sqlite    文件存储     内容提供者

 

//数据库的使用,无外乎就是增删改查

//首先 开辟出一个数据库的操作类,方便管理

public class UserExpress {//类名随便写 不过写你自己知道的,这样方便管理维护,

    Context mC;//上下文对象

    SQLiteDatabase db;//数据库的操作对象   //注意 这里只声明没有实现, 别在成员变量里面实例化东西 

    public UserExpress(Context context) {//构造方法只需要传递一个上下文对象, 数据库的操作对象是你数据库对象来获得的      //获得数据库对象需要一个上线文对象,所以才传递

        mC = context;

        UserOpenHelper userOpenHelper=new UserOpenHelper(mC);//这个是你刚才写的数据库对象,实例化调用构造                    

        db=userOpenHelper.getReadableDatabase();//通过数据库对象 来获得数据库操作对象,这样 你使用db这个对象,才不会报空

    }  

   /**

     * 增加   

   */   

  public void addUser(User user){

        ContentValues cv=new ContentValues();//获得存储对象

        cv.put("username",user.getName());//也是put 通过key -value形式存储,key就是你的表的列名,别乱写

        cv.put("pwd",user.getPwd());

        cv.put("level",user.getLevel());

        db.insert("user",null,cv);//insert方法是添加方法,第一个参数是你表名,注意是表名,不是数据库名。第二个参数是主键,如果没有 写null 有就写你的主键列名,第三个 就是你的存储对象。    

}

       /**  

    * 查询方法 //查询方法,分两种 一个是查一个,一个是查所有     

  */   

  public String getLevel(String name){

        Cursor c=db.rawQuery("select * from user where username=?",new String[]{name});//这里是查询一个       //select  * from 表名,代表从那张表里面取出对应数据 规定。 //查询必须使用游标 Cursor //通过db.rawQuery方法 //两参,第一个参数 数据库语句 第二个参数 你查询的关键 //如果要查询数据库中,name这一列等于你传递进来的数据,就用上面那种写法 其余类推。第二个参数是传递进来的参数,必须用Sting数组,这是方法规定

               String name=null;

        if(c!=null){//拿到游标之后,如果不为空。

            if(c.moveToNext()){因为游标初始在第一行,是列那一行 所以得执行一此movetoNext方法

                name=c.getString(c.getColumnIndex("level"));//如果能移动到下一行,证明拿到了数据,然后通过游标的get方法

       //以String数据类型为例,首先 c.getString();

       //方法里面需要一个列的下标,所以在方法里面传递        

//c.getColumnIndex("level")//这里面写你要获得数据的列名。

        //name=c.getString(c.getColumnIndex("level"))两者结合在一起 就这样

       //这样,就拿到了你想要查询的信息

。             }   

      }        

return name

//如果查询所有。 Cursor c=db.rawQuery("select * from user ",null);//

其余操作类似     }

//删除方法 //删除全部 和删除一个 public void deleteone(String name){//删除一个肯定要有个删除的依靠

        db.delete("user","name=?",new String[]{name)});//第一个参数是表名,第二个参数,你要删除的查询列,必须这样写 第三个,String数组 告诉系统你通过什么来删除     //如果删除全部   //则db.delete("user",null,null);//直接这样删除

}

//修改方法

 /**      * 修改学生      */     public void updateStudent(String namebefore,String nameafter){

        ContentValues cv=new ContentValues();//获得添加修改对象

        cv.put("name",nameafter));//还是put  key-vaule的形式 key是列名

               db.update("user",cv,"name=?",new String[]{namebefore});//调用数据库操作对象的update方法  //第一个参数。修改的数据在哪个表,即表名,第二个参数,你修改之后的对象,上面定义了一个,也就是普通的添加,通过重复的key覆盖前面实现  //第三个参数,你修改的数据依靠什么来查询 第四个参数,你查询的依靠  //ex  如果我想把name这一列的李林 改成 李子曦  //第一个参数代表我要在user这张表里面操作,第二个参数代表我修改后是李子曦,第三个参数,我是修改是通过name列查询  //第4个参数,我要查的是李林

    }

}

转载于:https://www.cnblogs.com/liubingguang/p/5502354.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值