Android学习日记 操作sqlite小型数据库
一、sqlite是什么?
SQLite是Android系统内置的轻量级的关系型数据库,它的运算速度非常快,占用资源很少,特别适合在移动设备上使用。
二、使用步骤
代码如下:
package com.example.practice;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private Mydatabasehelper mydatabasehelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
//创建数据库 上下文 数据库名 工厂 版本
mydatabasehelper = new Mydatabasehelper(this,"user",null,1);
//添加数据库可读写能力
mydatabasehelper.getWritableDatabase();
SQLiteDatabase dbr = mydatabasehelper.getReadableDatabase();
//增加数据方法
dbr.execSQL("insert into user values(?,?,?)",new Object[]{null,"张大炮","123456"});
dbr.execSQL("insert into user values(?,?,?)",new Object[]{null,"张铁柱","123456"});
//删除数据方法
dbr.execSQL("delete from user where id = ? ",new Object[]{2});
//修改数据方法
dbr.execSQL("update user set name = ? where id = ?",new Object[]{"张铁柱",1});
//查询数据方法
//游标 获取sql语句
Cursor cursor = dbr.rawQuery("select * from user",null);
//如果游标指向第一个
if(cursor.moveToFirst()){
// 如果游标存在下一个 就打印数据库中的name
do{
Log.e("user",cursor.getString(cursor.getColumnIndex("name")));
} while(cursor.moveToNext());
}
}
/** 以何种方式打开数据库
getReadableDatabase()
以读写的方式打开数据库对应的SQLiteDatabase对象,如果数据库磁盘满了,则只能读不能写,并且抛出异常
getWritableDatabase()
以写的方式打开数据库对应的SQLiteDatabase对象,如果数据库磁盘满了,则返回打开失败,继而以只读方式打开数据库 */
//自己写一个Mydatabasehelper类 继承SQLiteOpenHelper 这个类用来写建表语句和初始数据
class Mydatabasehelper extends SQLiteOpenHelper{
public Mydatabasehelper( Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//建库建表语句
db.execSQL("create table if not exists user(" +
"id Integer primary key autoincrement," +
"name varchar(20)," +
"pwd varchar(20)" +
")");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// db.execSQL("create table if not exists type(" +
// "id Integer primary key autoincrement," +
// "name varchar(20)," +
// ")");
}
}
}
2.1追加
如果想再添加一张表如何做才能不运行失败?在自定义类里的onUpgrade添加新的建表语句,并且把MainActivity.java init()里创建数据库时 版本更改为比当前版本号数字大的数字,就可以自动调用onUpgrade方法,就可以对数据库进行升级了
自定义数据库帮助工具 ↓
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("create table if not exists type(" +
"id Integer primary key autoincrement," +
"name varchar(20)," +
")");
}
MainActivity.java init() ↓
mydatabasehelper = new Mydatabasehelper(this,"user",null,2); //2或以上