Android开发之sqlite数据库的练习

逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述Android开发之sqlite数据库的练习相关的知识,希望能为你提供帮助。
一、目标 通过employee员工类来做例子练习sqlite数据库的创建更新以及增删改查,并使用sqlite expert可视化软件来检查数据库的操作。 二、具体步骤 (1)创建sqlite数据库 第一步:建立一个Help类继承sqliteOpenHelper类来创建数据库,实现SQLiteOpenHelper的接口,并添加一个构造方法。父类构造方法需要有4个参数,数据库的名字和数据库的等级另外创建一个常量类类保存,并且这种的名字一般都全部大写,Ctrl+Shift+U可以快捷全部换成大写

/** * * @ context上下文 * @ name数据库名称 * @ factory游标工厂 * @ version版本号 */ public DataBaseHelper( Context context) { super(context, Constants.DATABASE_NAME, null, Constants.DATABASE_VERSION); }

其中有两个成员方法,onCreate方法会在数据库刚刚被创建的时候调用,onUpGrade方法会在数据库更新的时候被调用(newVersion> oldVersion)
@Override public void onCreate(SQLiteDatabase db) {//创建数据库,第一次创建时才会调用 //创建字段 //Log.d(TAG,"创建数据库...."); //sql:create table table_name(id integer,name varchar,age integer,salary integer); String sql="create table "+Constants.TABLE_NAME+"(id integer,name varchar,age integer,salary integer)"; db.execSQL(sql); }@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //更新数据库 只有newVersion高于oldVersion时才会调用 //newVersion=oldVersion时不会调用 //newVersion< oldVersion时会报错 // Log.d(TAG,"升级数据库...."); // Stringsql; switch (oldVersion){ case 1: sql ="alter table "+Constants.TABLE_NAME+" add phone integer"; db.execSQL(sql); break; case2: break; } }

第二步:主函数中实例SQLiteOpenHelper类,并且调用getWriteDataBase()方法,数据库就可以创建了
DataBaseHelper helper = new DataBaseHelper(this); helper.getWritableDatabase();

 
创建成功的表结构:(与onCreative里面的表结构一样)
Android开发之sqlite数据库的练习

文章图片

【Android开发之sqlite数据库的练习】 
创建成功的文件结构:
Android开发之sqlite数据库的练习

文章图片

 
  (2)数据库升级 数据库升级需要调用onUpGrade方法,用newVersion和oldVersion来比较判断需要添加那些内容或者进行那些操作,newVersion需要在Constants类里面更改DATABASE_VERSION才可以
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //更新数据库 只有newVersion高于oldVersion时才会调用 //newVersion=oldVersion时不会调用 //newVersion< oldVersion时会报错 // Log.d(TAG,"升级数据库...."); // Stringsql; switch (oldVersion){ case 1: sql ="alter table "+Constants.TABLE_NAME+" add phone integer"; db.execSQL(sql); break; case2: break; } }

DATABASE_VERSION升级到2之后
 
Android开发之sqlite数据库的练习

文章图片

 
  (3)Dao层操作(SQL语句操作) 
Android开发之sqlite数据库的练习

文章图片
Android开发之sqlite数据库的练习

文章图片
package com.example.databasedemo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建数据库 DatabaseHelper helper =new DatabaseHelper(this); helper.getWritableDatabase(); Dao dao =new Dao(getApplicationContext()); //dao.insert(); //dao.update(); //dao.query(); dao.delete(); } }

MainActivity 
Android开发之sqlite数据库的练习

文章图片
Android开发之sqlite数据库的练习

文章图片
package com.example.databasedemo; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; /** * 这个类用于对数据库的增删改查 */ public class Dao {private final DatabaseHelper mHelper; private static final String TAG="Dao"; public Dao(Context context){//创建数据库 //Ctrl+Alt+F,之后加回车,创建成员变量 mHelper = new DatabaseHelper(context); }publicvoid insert(){ SQLiteDatabase db = mHelper.getWritableDatabase(); String sql="insert into "+Constants.TABLE_NAME+"(_id,name,age,salary,phone) values(?,?,?,?,?)"; Object []obj={1,"haohao",20,10000,1234567890}; db.execSQL(sql,obj); db.close(); }publicvoid delete(){ SQLiteDatabase db = mHelper.getWritableDatabase(); String sql="delete from "+Constants.TABLE_NAME+" where name = ?"; Object []obj={"haohao"}; db.execSQL(sql,obj); db.close(); }publicvoid update(){ SQLiteDatabase db = mHelper.getWritableDatabase(); String sql="update "+Constants.TABLE_NAME+" set salary= ? where name = ?"; Object []obj={20000,"haohao"}; db.execSQL(sql,obj); db.close(); }publicvoid query(){ SQLiteDatabase db = mHelper.getWritableDatabase(); String sql="select * from "+Constants.TABLE_NAME+" where name = ?"; String []obj={"haohao"}; Cursor cursor = db.rawQuery(sql, obj); while (cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String age = cursor.getString(cursor.getColumnIndex("age")); Log.d(TAG,"名字:"+name+"年龄:"+age); } cursor.close(); db.close(); } }

Dao 三、心得体会 总的来说今天的收获还是不小的,sqlite的操作语句和mysql的类似所以不难理解,但是创建数据库确实方便很多,有已经封装好的类可以直接调用创建,非常方便。另外今天我学到的最有用的东西我认为是常量类的创建,把常量全部放到一个类里面,既方便了之后的迭代,又方便了统一的调用更改。 

    推荐阅读