SQLite简介
- 轻量级 : SQLite数据库是一个轻量级的数据库, 适用于少量数据的CURD;
- 文件本质 : SQLite数据库支持大部分SQL语法, 允许使用SQL语句操作数据库, 其本质是一个文件, 不需要安装启动;
- 数据读写 : SQLite数据库打开只是打开了一个文件的读写流, 如果有大数据量读写, 需要高并发存储, 那么就不应该使用SQLite;
在安卓里面数据库怎么用呢,简单来说可用分为以下三步:
1、新建一个数据库帮助类,继承自SQLiteOpenHelper,复写onCreate() 和 onUpgrade()
2、新建一个数据里操作类(dao类),利用 数据库帮助类 得到数据库的实例,然后在dao类里面编写 增删改查 的方法,不过我没有写dao类,增删查方法全写在数据库帮助类里面了
3、在Activity里面实例化数据库操作类(dao类),调用对应的 增删查改方法。
(对数据进行的操作也就无非四种,即CRUD。其中C代表添加(Create),R代表查询(Retrieve),U代表更新(Update),D代表删除(Delete)。有人叫增删改查,有人叫增删查改)
详细说下数据库帮助类各个方法的用处:
1.name :数据库名 ,CursorFactory:游标工厂类 ,version:当前数据的版本
public SqlUtils(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
2.SQLiteDatabase :安卓中的SQLite数据库,创建数据库中的数据表单的方法
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table zk(_id integer primary key,name varchar);");
}
3.增加数据,一般情况下两个都可以拿到数据库对象 db,当数据库中的数据超出数据存储的大小的时候:
getWritableDatabase:返回null
getReadableDatabase:返回一个只读对象
public void insertSQL(String name){
//SQLiteDatabase db1=getReadableDatabase();
SQLiteDatabase db=getWritableDatabase();
db.execSQL("insert into zk (name) values ('"+name+"')");
db.close();
}
4.删除数据
public void deleteSQL(int ID){
SQLiteDatabase db=getWritableDatabase();
db.execSQL("delete from student where _id="+ID);
db.close();
}
5.更新数据, oldVersion 老版本号,newVersion:新的版本更新
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion>oldVersion){
updateSQL();
}
}
public void updateSQL() {
SQLiteDatabase db=getWritableDatabase();
db.execSQL("update zk set name='更改后的值' where _id=1");
db.close();
}
6.查找数据
public List<Map<String,String>> getSQL(){
SQLiteDatabase db=getWritableDatabase();
List<Map<String,String>> list=null;
list=new ArrayList<>();
Cursor cursor = db.rawQuery("select *from zk", null);
while(cursor.moveToNext()){
Map<String,String> map=new HashMap<>();
map.put("ID",""+cursor.getInt(cursor.getColumnIndex("_id")));
map.put("name",""+cursor.getString(cursor.getColumnIndex("name")));
list.add(map);
}
return list;
}
7.直接调用就可以实现了
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button add,remove,set,get;
private SqlUtils mSqlUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSqlUtils=new SqlUtils(this,"测试",null,1);
initView();
}
private void initView() {
add = findViewById(R.id.add);
remove = findViewById(R.id.remove);
set = findViewById(R.id.set);
get = findViewById(R.id.get);
add.setOnClickListener(this);
remove.setOnClickListener(this);
set.setOnClickListener(this);
get.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.add:
mSqlUtils.insertSQL("BUG");
break;
case R.id.remove:
mSqlUtils.removeSQL(4);
break;
case R.id.set:
mSqlUtils.updateSQL();
break;
case R.id.get:
List<Map<String, String>> sql = mSqlUtils.getSQL();
for (Map<String,String> map: sql) {
String id = map.get("ID");
String name = map.get("name");
Log.e("ZHOUKANG", ""+id);
Log.e("ZHOUKANG", ""+name);
}
break;
}
}
}
效果图:
好了就这样了很简单的一个小demo