菜单

Android使用SQLite数据库的简短实例

2018年11月16日 - sqlite

先行画个图,了解下Android下数据库操作的粗略流程:

  转载整理为:http://my.csdn.net/lmj623565791

图片 1

  我正要开头接触Android的下还还不敢相信,Android系统还是置于了数据库的!好吧,是自顶孤陋寡闻了。由于自家之前是打Web方向改变过来的,对数据库方面的技艺也是专程有偏好,当知道这同样音讯随后确实多惊喜。Android中放置的数据库是SQLite,而自事先举行Web开发时最好常用之数据库是MySQL,经过对比之后我发觉立即半只数据库极为一般,都支持标准的SQL语法,还随了数据库的ACID事务,所以只要您先用过其他的涉及项目数据库,就得快捷地上手SQLite。

1.率先,写一个自己之数据库操作帮助类似,这个类似继承自Android自带的SQLiteOpenHelper.

  本篇我用指引新童鞋通过dos窗口实现对sqlite数据库的查询、修改、删除、增加操作,下面我们虽起来本篇的介绍。

2.当和谐的DAO层借助自己之Helper写数据库操作的有些道

  SQL(Structured Query
Language)是同种标准的数据库查询语言,即具有的涉项目数据库都见面支持其,只不过每种数据库对SQL语言的支撑及业内在正在微薄之不同。我们毫不关心其他数据库对SQL语言的支持情况,这里我们设把第一在SQLite上虽可了。下面我将使模拟器来针对SQLite支持的各种指令进行现身说法,如果您想用手机的语句也足以,但假如保证您的手机已经Root,并且包含sqlite3这个令文件。

3.Activity调用DAO层的数据库操作方法进行操作

  首先保证模拟器已经连续达了计算机,然后在指令执行输入adb
shell进入控制台,如下图所示:

脚例子是:

  图片 2

1.Helper

  注意#号代表我们脚下一度是最佳用户了,如果显示的是$符号,表示目前只是普通用户而已,这时还得输入su命令切换一下用户身份才行。

复制代码 代码如下:

  有了超级用户权限之后,我们能够召开的事体就那么些了,这里我们事先翻转网自带的联系人表吧。进入到/data/data目录下,如下图所示:

package cn.learn.db.util;

  图片 3

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

  所有应用程序的地方存储文件都是存放于是目录下面的。为了使叫不同应用程序之间的数易区别开来,Android大凡采用应用程序包名进行分离管理,也就是说每个应用程序的地方存储文件还见面存放于大团结应用程序包名的老大目录下,这里我们ls一下探望发生多少子目录:

public class DBHelper extends SQLiteOpenHelper {

  图片 4

 private final static String DB_NAME =”test.db”;//数据库名
 private final static int VERSION = 1;//版本号

  OK,确实发生过多,毕竟手机上装有的应用程序都于此。其中,com.android.providers.contacts中存放的便是维系人之相干数据,我们进入及此目录再ls一下:

 //自带的构造方法
 public DBHelper(Context context, String name, CursorFactory factory,
   int version) {
  super(context, name, factory, version);
 }

  图片 5

 //为了每次构造时未用传入dbName和本号,自己得新定义一个构造方法
 public DBHelper(Context cxt){
  this(cxt, DB_NAME, null, VERSION);//调用面的构造方法
 }

  接着进入到databases目录中,再ls:

 //版本变更时
 public DBHelper(Context cxt,int version) {
  this(cxt,DB_NAME,null,version);
 }

  图片 6

 //当数据库创建的下调用
 public void onCreate(SQLiteDatabase db) {
  String sql = “create table student(” +
      “id integer primary key autoincrement,” +
      “name varchar(20),” +
      “age int)”;

  其中后缀名为journal的公文是日记文件,我们决不管,contacts2.db以及profile.db才是真的的数据库文件,可以下sqlite3下令来开辟数据库,如下图所示:

  db.execSQL(sql);
 }

  图片 7

 //版本更新时调用
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
  String sql  = “update student ….”;//自己的Update操作
  db.execSQL(sql);
 }

  好之,数据库已经开辟了,那么我们怎么才会领略当前数据库中产生什么样表也?很简短,.table命令就足以完成了:

}

  图片 8

2.写DAO层

  哇,竟然发生这样多张表!是的,联系人的数据结构非常复杂,很多底数码都是分表存储的。这里我们无挑一样摆放表,比如说accounts表,如果本身眷恋了解就张表中生出哪列应该怎么处置呢?在MySQL中好行使desc accounts这个命令,但SQLite却不识这令,毕竟它是发差异化的。SQLite中得使pragma
table_info(TABLE_NAME)这个令来查看表的数据结构,如下图所示:

复制代码 代码如下:

  图片 9

package cn.learn.db.dao;

  可以看出,一共展示了三长结果,表示accounts表中共有三列。但是,所有的字段都缩在了一条龙里面,并就此“|”符号分隔,这样我们非常麻烦看有每个字段的含义。很粗略,只需要更换一种植显示模式就是推行了,比如说line模式就是老大对的。输入.mode
line命令切换显示模式,然后再度运行pragma命令,结果而下图所示:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import cn.learn.db.dao.domain.Student;
import cn.learn.db.util.DBHelper;

  图片 10

public class StudentDao {

  怎么样,这样即便清楚多了咔嚓?这三排的列名分别是account_name、account_type和data_set,数据类型都是TEXT(字符串),允许为空,并且都未是主键。好,那自己本想查一查accounts发明中之数也?这即极简单了,使用select语句就得了,如下所示:

 DBHelper helper = null;

  图片 11

 public StudentDao(Context cxt) {
  helper = new DBHelper(cxt);
 }

  以上也经Android自带的模拟器进行操作,下面介绍一下怎么下真机进行调节:

 /**
  *
当Activity中调用此构造方法,传入一个版本号时,系统会以产一致糟调整用数据库时调用Helper中的onUpgrade()方法开展翻新
  * @param cxt
  * @param version
  */
 public StudentDao(Context cxt, int version) {
  helper = new DBHelper(cxt, version);
 }

  第一步:adb devices 命令:查看时连日的手机;

 // 插入操作
 public void insertData(Student stu) {
  String sql = “insert into student (name,age)values(?,?)”;
  SQLiteDatabase db = helper.getWritableDatabase();
  db.execSQL(sql, new Object[] { stu.name, stu.age });
 }

  图片 12

 // 其它操作

  可以望手机号出来了,说明自身之手机都连上adb了;

}

  然后:adb shell
 :这个命令是上shell命令界面,可以采取具有的linux命令;

得这些,其它操作就概括了….

  图片 13

除此以外,数据库文件在这目录

  切到data/data文章夹下:cd data/data

图片 14

  图片 15

而可能感兴趣之篇章:

  使用ls命令显示该文件夹下的拥有文件试试:

  图片 16

  访问于拒绝,这是因没Root权限,然后我们之所以su命令获取root权限:

  图片 17

  在讹诈下su命令时,手机及会弹有要root权限的允许,取消按钮,如图,(选择允许)

  ok到此处关于如何通过dos窗口进行sqlite数据库操作的知识介绍了。

相关文章

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图