SQLite数据库操作及ListView组件

本文详细介绍了Android中SQLite数据库的使用,包括SQLite数据库的创建、CRUD操作,以及如何利用ListView组件显示查询结果。文章讲解了如何创建SQLiteOpenHelper的子类,执行SQL语句进行数据的增删改查,并探讨了数据操作的两种方式的优缺点。同时,还展示了如何处理数据库的事务,并给出使用ListView显示大量数据的示例,包括BaseAdapter和SimpleAdapter的用法。
摘要由CSDN通过智能技术生成

一、SQLite数据库

1.什么是数据库?

    存储大量的相似结构的数据。本质上是一个高效率的文件管理系统。提供快速的增删改查和多并发操作。

    常用的数据库有:mysql,oracle,db2,sqlserver.

2.SQLLite数据库

    android原生的数据库,轻量级(体积小,可移植性高,,功能完善,支持事务控制,被大量的嵌入到其它系统中作为数据库。),关系型数据库。

3.SQLite数据库的创建

    (1)写一个类继承SQLiterOpenHelper,实现未实现的方法

        public class MySQLiterOpenHelper extents SQLiterOpenHelper{

            //参数说明:

            /*

            public MySQLiterOpenHelper(Content,name,factory,version)

            Context:表示当前环境对象,里面有我们需要用到的常量和方法。有很多抽象方法,只定义具体功能,不实现。

            name:数据库的名称,若为空则在内存中创建数据库。应用退出即销毁

            factory:数据操作的游标,游标工厂,若为null则为默认工厂。

            version:数据库的版本,从1开始。版本号必须是正整数且增加的。

            */

            public MySQLiterOpenHelper(Content context){

                super(content,"mydb.db",null,1);

            }

            //此方法会在第一次创建数据库时使用,可以用来初始化数据库表和表中的数据。

            pubic void onCreate(SqllitDatabase db){

                //在此方法中初始化数据库中的表。

            }

            //此方法会在数据库更新时调用,用来更新已有的数据库。通常版本更新时会触发该操作。

            public void onUpdate(SQLliterDatabase database,int oldVersion,int newVersion){

                //根据版本不同执行不同的操作,注意没有break,即用户若从版本1开始更新则接下来版本中的更新命令也需要执行。巧妙的利用了switch的特性,很棒!

                switch(oldVersion){

                    case 1:

                        db.execute...

                    case 2:

                        db.execute...

                    case 3:

                        db.execute...

                    default:

                        ...

                }

            }

        }

    (2)创建继承类的对象。

        //下面的语句不会创建数据库,只有操作的时候才会创建。

        SQLiterOpenHelper helper=new MySQLiterOpenHelper(this);    //

    (3)调用方法创建数据库

        //执行如下操作中某一条可以创建数据库,下面的方法其实拿到的是同一对象,若为getWritableDatabase则返回的数据加锁,若为getReadableDatabase则返回的数据库没有锁机制,可根据需要调用不同的方法。

        SQLiterDatabase database=helper.getWritableDatabase()

        SQLiterDatabase database=helper.getReadableDatabase()

        SQLiter数据的底层其实是在/data/data/[应用包名]/databases/xxx.xx文件中保存的数据。

三、数据库的CRUD

    SQLiter支持数据类型,但在底层的实现中是不区分数据类型也不检查数据长度,底层无论什么数据,都是用字符串来存储。虽然SQLiter不检查数据类型,但在写sql时最好声明清楚数据类型,sql除了给应用程序看,还可以给人看,方便维护者知道数据类型和大小限制。

        增删改用:

            db.execSQL();

            若执行时需要用到多个参数则使用new Object[]{}进行参数数组的初始化。

        查询用:

            db.rawQuery();

            若执行时需要用到多个参数则使用new String[]{}进行参数数组的初始化。

        a.游标用完要关闭。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值