安卓开发4 SQLite数据库简单实现

一、本项目完成的功能

1.实现能存储姓名、年龄信息的SQLite数据库,并在app页面中显示

2.在页面中通过点击不同的按钮实现对数据库的增删改查操作

二、项目的具体步骤

1.新建名为DbHelper的SQLite数据库打开助手类,重写2个抽象方法onCreate()和onUpgrade(),其代码如下:

public class DbHelper extends SQLiteOpenHelper{

    public static final String TB_NAME = "friends";  //表名

    //构造方法:第1参数为上下文,第2参数库库名,第3参数为游标工厂,第4参数为版本

    public DbHelper(Context context, String dbname, CursorFactory factory, int version) {

        super(context, dbname, factory, version);  //创建或打开数据库

    }

    @Override

    public void onCreate(SQLiteDatabase db) {

        //当表不存在时,创建表;第一字段为自增长类型

        db.execSQL("CREATE TABLE IF NOT EXISTS " +

                TB_NAME + "( _id integer primary key autoincrement," +

                "name varchar," + "age integer"+ ")");

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // 执行SQL命令

        db.execSQL("DROP TABLE IF EXISTS " + TB_NAME);

        onCreate(db);

    }

}

2.新建名为MyDAO的数据库访问类,调用打开数据库的助手类DbHelper,实现针对数据库test.db的表friends的增删改查方法,其代码如下:

public class MyDAO {

    private SQLiteDatabase myDb;  //类的成员

    private DbHelper dbHelper;  //类的成员

    public MyDAO(Context context) {  //构造方法,参数为上下文对象

        //第1参数为上下文,第2参数为数据库名

        dbHelper = new DbHelper(context,"test.db",null,1);

    }

    public Cursor allQuery(){    //查询所有记录

        myDb = dbHelper.getReadableDatabase();

        return myDb.rawQuery("select * from friends",null);

    }

    public  int getRecordsNumber(){  //返回数据表记录数

        myDb = dbHelper.getReadableDatabase();

        Cursor cursor= myDb.rawQuery("select * from friends",null);

        return cursor.getCount();

    }

    public void insertInfo(String name,int age){  //插入记录

        myDb = dbHelper.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put("name", name);

        values.put("age", age);

        long rowid=myDb.insert(DbHelper.TB_NAME, null, values);

        if(rowid==-1)

            Log.i("myDbDemo", "数据插入失败!");

        else

            Log.i("myDbDemo", "数据插入成功!"+rowid);

    }

    public void deleteInfo(String selId){  //删除记录

            String where = "_id=" + selId;

            int i = myDb.delete(DbHelper.TB_NAME, where, null);

            if (i > 0)

                Log.i("myDbDemo", "数据删除成功!");

            else

                Log.i("myDbDemo", "数据未删除!");

    }

    public void updateInfo(String name,int age,String selId){  //修改记录

      //方法中的第三参数用于修改选定的记录

        ContentValues values = new ContentValues();

        values.put("name", name);

        values.put("age", age);

        String where="_id="+selId;

        int i=myDb.update(DbHelper.TB_NAME, values, where, null);

        //上面几行代码的功能可以用下面的一行代码实现

        //myDb.execSQL("update friends set name = ? ,age = ? where _id = ?",new Object[]{name,age,selId});

        if(i>0)

            Log.i("myDbDemo","数据更新成功!");

        else

            Log.i("myDbDemo","数据未更新!");

    }

}

3.在MainActivity程序代码中,使用了MyDAO类的相关方法实现对数据库增删改查,源码见代码仓库

三、效果展示


    添加一条数据后:

四、代码实现

代码仓库地址:https://gitee.com/lookevin/application-of-sqlite-database

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容