android SQLite数据库用法图文详解(附源码)

简介: (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景         SQLite是嵌入式设备使用的一种轻量型数据库。可以通过执行sql语句对数据库进行操作,android也为其提供了完善的函数接口支持。下面就来实现一个简单的数据库,可以实现查询以及插入等功能。 例图如下:                               

(转载请注明出处:http://blog.csdn.net/buptgshengod

1.背景

        SQLite是嵌入式设备使用的一种轻量型数据库。可以通过执行sql语句对数据库进行操作,android也为其提供了完善的函数接口支持。下面就来实现一个简单的数据库,可以实现查询以及插入等功能。

例图如下

                                                                          1-1 数据库app

   

     如果你的手机已经root过,将手机连到pc端eclipse我们可以在DDMS中查看这个数据库文件。路径是data/data/app的包/databases就可一看到自己命名的*.db格式的数据库文件了

                                                                                                                     1-2 DDMS截图

 

  

    要想在pc端查看这个数据库文件的内容,我们需要先将这个.db文件copy到电脑上,我是用的是linux系统,可以使用系统自带的sqlite3来查看数据库文件。 

进入shell,执行下面命令,进入数据库

sqlite3 /home/CORPUSERS/28852262/Desktop/sec_db

                                              1-3 进入数据库


以下为sqlite 在linux下的使用方法

1、安装sqlite3
ubuntu下安装sqlite3直接在终端运行命令:
#apt-get install sqlite3
查看版本信息:
#sqlite3 -version
 


sqlite3常用命令
当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:
#sqlite3 test.db
 
查看数据库文件信息命令(注意命令前带字符'.')
sqlite>.database

查看所有表的创建语句:
sqlite>.schema
 
查看指定表的创建语句:
sqlite>.schema table_name
 
sql语句的形式列出表内容:
sqlite>.dump table_name
 
设置显示信息的分隔符:
sqlite>.separator symble
Example:设置显示信息以‘:’分隔
sqlite>.separator :
 
设置显示模式:
sqlite>.mode mode_name
Example:默认为list,设置为column,其他模式可通过.help查看mode相关内容
sqlite>.mode column
 
输出帮助信息:
sqlite>.help
 
设置每一列的显示宽度:
sqlite>.width width_value
Example:设置宽度为2
sqlite>.width 2
 
列出当前显示格式的配置:
sqlite>.show
 
退出sqlite终端命令:
sqlite>.quit

sqlite>.exit
 
3sqlite3指令
sql的指令格式:所有sql指令都是以分号(;)结尾,两个减号(--)则表示注释。
如:
sqlite>create studen_table(Stu_no interger PRIMARY KEY, Name text NOT NULL, Id interger UNIQUE, Age interger CHECK(Age>6), School text DEFAULT 'xx小学);
该语句创建一个记录学生信息的数据表。
 
3.1 sqlite3存储数据的类型
NULL:标识一个NULL
INTERGER:整数类型
REAL:浮点数
TEXT:字符串
BLOB:二进制数

3.2 sqlite3存储数据的约束条件
Sqlite常用约束条件如下:
PRIMARY KEY 主键:
1)主键的值必须唯一,用于标识每一条记录,如学生的学号
2)主键同时也是一个索引,通过主键查找记录速度较快
3)主键如果是整数类型,该列的值可以自动增长
NOT NULL 非空:
约束列记录不能为空,否则报错
UNIQUE 唯一:
除主键外,约束其他列的数据的值唯一
CHECK 条件检查:
约束该列的值必须符合条件才可存入
DEFAULT 默认值:
列数据中的值基本都是一样的,这样的字段列可设为默认值

3.3 sqlite3常用指令
1)建立数据表
create table table_name(field1 type1, field2 type1, ...);
table_name是要创建数据表名称,fieldx是数据表内字段名称,typex则是字段类型。
例,建立一个简单的学生信息表,它包含学号与姓名等学生信息:
create table student_info(stu_no interger primary key, name text);
 
2)添加数据记录
insert into table_name(field1, field2, ...) values(val1, val2, ...);
valx为需要存入字段的值。
例,往学生信息表添加数据:
Insert into student_info(stu_no, name) values(0001, alex);
 
3)修改数据记录
update table_name set field1=val1, field2=val2 where expression;
wheresql语句中用于条件判断的命令,expression为判断表达式
例,修改学生信息表学号为0001的数据记录:
update student_info set stu_no=0001, name=hence where stu_no=0001;
 
4)删除数据记录
delete from table_name [where expression];
不加判断条件则清空表所有数据记录。
例,删除学生信息表学号为0001的数据记录:
delete from student_info where stu_no=0001;
 
5)查询数据记录
select指令基本格式:
select columns from table_name [where expression];
a查询输出所有数据记录
select from table_name;
b限制输出数据记录数量
select from table_name limit val;
c升序输出数据记录
select from table_name order by field asc;
d降序输出数据记录
select from table_name order by field desc;
e条件查询
select from table_name where expression;
select from table_name where field in ('val1', 'val2', 'val3');
select from table_name where field between val1 and val2;
f查询记录数目
select count (*) from table_name;
g区分列数据
select distinct field from table_name;
有一些字段的值可能会重复出现,distinct去掉重复项,将列中各字段值单个列出。
 
6)建立索引
当说数据表存在大量记录,索引有助于加快查找数据表速度。
create index index_name on table_name(field);
例,针对学生表stu_no字段,建立一个索引:
create index student_index on student_table(stu_no);
建立完成后,sqlite3在对该字段查询时,会自动使用该索引。
 
7)删除数据表或索引
drop table table_name;
drop index index_name;


输入相应命令我们看到了对数据库的所有操作。


                                                                          1-4 数据库操作



2.代码

          代码分两部分,第一部分dbHelper,继承android提供的类SQLiteOpenHelper用来管理数据库。

        第一部分

        这个类的基本架构如下所示,包括建表,更新,命名等。此外我们如果要对数据库增添插入,查询,修改等功能的时候,也要写在这个类里。

public class dbhelp extends SQLiteOpenHelper{

    public dbhelp(Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
      
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        
    }

}

         第二部分

               这个就是数据库的调用,首先生成一个dbHelper对象,因为我们要将数据库内容显示在listivew里,我们要建立一    个curse来连接数据库和适配器adapter,最后用listview输出这个adapter即可。

 db=new dbHelper(MainActivity.this);
        myCursor=db.select();
        SimpleCursorAdapter adpater=new SimpleCursorAdapter(this
                , R.layout.test, myCursor,
                new String[]{dbHelper.FIELD_TITLE},
                new int[]{R.id.topTextView});

        lv.setAdapter(adpater);


3.最后提供下源码

点击下载

目录
相关文章
|
8月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
270 5
|
8月前
|
数据库 Android开发
Android外部数据库的引用
简介:本文介绍了在Android项目中引用外部数据库的方法。首先,将现成的数据库文件放入项目的`assets`文件夹中(需手动创建)。其次,在APP引导界面通过代码将数据库拷贝至App目录下,确保数据库可用。最后,对数据库进行增删改查等操作。关键步骤包括判断数据库是否存在、使用`AssetManager`读取数据库文件并写入App私有目录,实现外部数据库的顺利集成与使用。
114 2
|
8月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
570 2
|
8月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
281 0
Android常用的room增删改查语句(外部数据库)
|
9月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
2700 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
1362 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
开发工具 Android开发 git
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
1256 0
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
1260 0