时间:2021-07-01 10:21:17 帮助过:2人阅读
//数据库 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个参数,我要查的是李林
}
}
数据库SQLiteDabaBase
标签: