SharedPreferences
SharedPreferences获取方式有几种 区别是是什么?
两种:
1.getSharedPreferences(参数1, 参数2)参数一代表 文件名称 参数二代表模式 模式默认MODE_PRIVATE;
2.getPreferences(参数1) 参数一代表模式 模式默认MODE_PRIVATE,
区别:
首先从调用层次上来分:
1.getPreferences(int mode)是由Activity来调用的。
2.getSharedPreferences(String name,int mode)由Context调用。
从文件命名来说:
1.getPreferences(int mode)不需要传递文件名,默认使用不带包名的类名作为文件名(即Activity java文件名,不带后缀)。
2.getSharedPreferences(String name,int mode)需要提供文件名,当然是以提供的name作为文件名
SharedPreferences有几种操作?
两种:分别是读取和写入
public class MainActivity3 extends AppCompatActivity {
/**
* SharedPreferences 数据读取和写入
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
//写入的数据 定义为String 后期好调用
String user="root";
String pwd="123456";
//SharedPreferences 数据写入
//1.1获取SharedPreferences 用getSharedPreferences方法 而不是new一个对象
SharedPreferences sp=getSharedPreferences("login",MODE_PRIVATE);
//2.借助Editor,向SharedPreferences中写入数据
SharedPreferences.Editor editor=sp.edit();
// 3.写入数据 只能写原始数据(boolean,float,int,long,string) 不能用复合类型
editor.putString("user",user);
editor.putString("pwd",pwd);
// 提交数据 可通过键值对取值
editor.commit();
// SharedPreferences 数据读取
//1.1获取SharedPreferences 用getSharedPreferences方法 而不是new一个对象
SharedPreferences sp=getSharedPreferences("login",MODE_PRIVATE);
//获取数据 通过键值对
String sp_user=sp.getString("user",user);
String sp_pwd=sp.getString("pwd",pwd);
//Toast弹窗
Toast.makeText(this, "账号:"+sp_user+"密码:"+sp_pwd, Toast.LENGTH_SHORT).show();
}
}
SQLite
优点:SQLite是Android内置的一个小型、关系型、属于文本型的数据库,通常只需要几百K的内存就足够了。SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务 轻量 无需配置的 本地化
SQLite的使用:
借用Class,DBHelper 继承SQLiteOpenHelper需要重写 以下两个方法:
onCreate 创建数据库
onUpgrade 更新数据库
上代码:
//创建一个class文件 DBHelper 继承 SQLiteOpenHelper
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(@Nullable Context context) {
super(context,"info.db",null,1);
}
//在onCreate() 方法中,创建表和插入数据
@Override
public void onCreate(SQLiteDatabase db) {
//创建表
//里面有三个属性 id user pwd 这里的values
db.execSQL("create table username(id int PRIMARY KEY,user text,pwd text)");
// 向表中加入数据
//1.使用sql语句插入
db.execSQL("INSERT INTO username VALUES(1,'root','000')");
//2.用sqlite特有方法插入(不推荐)
// ContentValues cv=new ContentValues();
// cv.put("id",2);
// cv.put("user","张三");
// cv.put("pwd","123456");
// db.insert("username",null,cv);
}
//onUpgrade 更新数据库
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
使用DBHelper执行增删改查流程
1.执行查询语句流程
- 获取数据库对象
- 执行查询 将结果集放入游标内
- 取出结果
- 释放资源
上代码:
public class MainActivity5 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
//引入DBHelper
DBHelper dbHelper=new DBHelper(MainActivity5.this);
// 做一个查询功能,将数据库中 userinfo表中数据全部查出
String sql="select * from username";
// 1.获取数据库对象
SQLiteDatabase db=dbHelper.getWritableDatabase();
// 2.执行语句, 得到结果集,把结果集放到游标内
Cursor cursor = db.rawQuery(sql,null);
// 3.取出结果(使用实体类)
//我这里用的是使用实体类 获取结果
List<Userinfo> list=new ArrayList<>();
while (cursor.moveToNext()){
Userinfo userinfo=new Userinfo();
userinfo.setId(cursor.getInt(0));
userinfo.setUser(cursor.getString(1));
userinfo.setPwd(cursor.getString(2));
list.add(userinfo);
}
// 4.释放资源
cursor.close();
dbHelper.close();
//输出
//可以从控制台看到获取的内容
for (Userinfo userinfo:list) {
Log.i("从数据库获取的值:", "id为:"+userinfo.getId()+"账号为:"+userinfo.getUser()+"密码为:"+userinfo.getPwd());
}
}
}
//实体类
public class Userinfo {
private int id;
private String user;
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
运行结果:
2.执行 增、删、改的流程
- 获取数据库对象
- 执行动作
- 释放资源
执行增、删、改操作都是一样的 这里就介绍删除操作了
上代码:
/**
*更新操作
*/
public class MainActivity7 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main7);
//引入DBHelper
DBHelper dbHelper=new DBHelper(MainActivity7.this);
//获取数据库对象
SQLiteDatabase db=dbHelper.getWritableDatabase();
//执行SQL语句
String sql="delete from username WHERE id=?";
db.execSQL(sql,new String[]{"2"});
//释放资源
dbHelper.close();
//这里用的是把效果弹到页面上
Toast.makeText(MainActivity7.this,"删除成功",Toast.LENGTH_SHORT).show();
}
}
结果咱们这页面没什么东西