Android开发之sqlite数据库的练习

Android开发之sqlite数据库的练习,第1张

概述一、目标通过employee员工类来做例子练习sqlite数据库的创建更新以及增删改查,并使用sqliteexpert可视化软件来检查数据库的 *** 作。二、具体步骤(1)创建sqlite数据库第一步:建立一个Help类继承sqliteOpenHelper类来创建数据库,实现SQLiteOpenHelper的接口,并添加一 一、目标  通过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,"升级数据库....");        //        String  sql;        switch (oldVersion){            case 1:                sql ="alter table "+Constants.table_name+" add phone integer";                db.execsql(sql);                break;            case  2:                break;        }    }
    第二步:主函数中实例sqliteOpenHelper类,并且调用getWriteDataBase()方法,数据库就可以创建了
     DataBaseHelper helper = new DataBaseHelper(this);        helper.getWritableDatabase();

 

创建成功的表结构:(与onCreative里面的表结构一样)

 

创建成功的文件结构:

 

   (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,"升级数据库....");        //        String  sql;        switch (oldVersion){            case 1:                sql ="alter table "+Constants.table_name+" add phone integer";                db.execsql(sql);                break;            case  2:                break;        }    }
DATABASE_VERSION升级到2之后

 

 

   (3)Dao层 *** 作(SQL语句 *** 作)

 

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

 

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);    }    public  voID 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();    }    public  voID delete(){        sqliteDatabase db = mHelper.getWritableDatabase();        String sql="delete from "+Constants.table_name+" where name = ?";        Object []obj={"haohao"};        db.execsql(sql,obj);        db.close();    }    public  voID 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();    }    public  voID 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的类似所以不难理解,但是创建数据库确实方便很多,有已经封装好的类可以直接调用创建,非常方便。另外今天我学到的最有用的东西我认为是常量类的创建,把常量全部放到一个类里面,既方便了之后的迭代,又方便了统一的调用更改。

 

总结

以上是内存溢出为你收集整理的Android开发之sqlite数据库的练习全部内容,希望文章能够帮你解决Android开发之sqlite数据库的练习所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存