一、SQLite介绍

SQLite优点:

1、轻量级 ,可移植性好,它是进程内的数据库引擎,使用SQLite一般只需要带上它的一个动态库。
2、绿色软件 –它的核心引擎本身不依赖第三方的软件,Android系统集成的。
3、单一文件 –就是数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。
4、内存数据库

SQLite缺点:

1、比较耗电
2、并发访问的锁机制,SQLite在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错
3、SQL标准支持不全

二、基本使用(增删改查)

创建数据库

  想要使用SQLite我们首先要创建一个数据库,这里需要创建一个class继承SQLiteOpenHelper。
 Android为了让我们更方便的管理数据库,专门给提供了一个QLiteOpenHelper帮助类。它是一个抽象类有两个抽象方法,具体如下:
 

MySQLite类

package com.example.mysqlitedemo;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class Mydbsqlite extends SQLiteOpenHelper{    //创建数据库    public Mydbsqlite(Context context, String name, CursorFactory factory,            int version) {        super(context, name, factory, version);    }    public Mydbsqlite(Context context, String name){        this(context, name, null, 1);        //反调上面的构造器    }    //创建table表,只要有表存在的时候不会再执行这个方法    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL("create table if not exists logtable(id integer not null primary key autoincrement,name verchar(20),password verchar(20) )");    }   //用于版本升级,需要更新版本时只需要将新的版本号数值比以前的大    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }}

MainActivity

public class MainActivity extends AppCompatActivity {private Mydbsqlite helper;    private SQLiteDatabase db;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        helper=new MyOpenHelper(getApplication(),TableConfig.TABLE_WORK_DAILY);        db=helper.getWritableDatabase();    }    }    }

查看表路径

DDMS——File Explorer——data——data——包名加类名——database

数据库的增加语句insert

db.insert(table, nullColumnHack, values)
参数解释:

table:表名
nullColumnHack:代表强行插入null值得数据列的列名。当values参数为null或不包含KEY—values对时该参数有效。
values:ContentValues值(类似于MAP),这里需要创建一个ContentValues值。通过put方法填入要出入的内容。

实例

private void insertdb() {        ContentValues values=new ContentValues();        values.put("name", met_username.getText().toString());        values.put("password",met_password.getText().toString());        db.insert("logtable", null, values);    }

数据库的删除语句

    db.delete(table, whereClause, whereArgs)
参数解释:

whereClause:满足该whereClause子句的记录将会被删除
whereArgs:用于为whereClause子句传入参数

实例

private void deletedb() {        db.delete("logtable", "name=?", new String[]{"zhangsan"});        Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_LONG).show();    }

数据库的改语句:

db.update(table, values, whereClause, whereArgs);
参数解释:

whereClause:满足该whereClause子句的记录将会被更新
whereArgs:用于为whereClause子句传入参数

实例

    private void updatedb() {        ContentValues values=new ContentValues();        values.put("password", "123455abc");        db.update("logtable", values, "name=?", new String[]{"zhangsan"});        Toast.makeText(getApplicationContext(), "修改成功", Toast.LENGTH_LONG).show();    }

数据库的查询语句

方式一

    db.rawQuery(sql, selectionArgs)

方式二:

db.query(distinct,table, columns, selection, selectionArgs, groupBy, having, orderBy)
参数解释:

columns:要查询出来的列名
selection:查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”
selectionArgs:对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。
groupBy:用于控制分组
having:用于对分组进行过滤
orderBy:排序方式(ASC升序 DESC 降序)
limit:用于进行分页

实例

private void selectdb() {    Cursor cursor=db.query("logtable", null, null, null, null, null, "id DESC limit 2 offset 3");    //offset抛弃最后两条,显示这两条上面那三条,offset主要用于分页显示的时候    //orderBy id DESC 按照id列进行降序排列    //db.rawQuery("select *from logtable", null);    cursor.moveToFirst();    while(!cursor.isAfterLast()){        String name=cursor.getString(cursor.getColumnIndex("name"));        String password=cursor.getString(cursor.getColumnIndex("password"));        Log.d("用户名", name);        Log.d("密码", password);        cursor.moveToNext();    }    }

注:

Cursor cursor=db.query("logtable", null, null, null, null, null, "id DESC ","2,3");//2:偏移量//3:显示数量

更多相关文章

  1. Android开发入门之路(续篇)
  2. Android支持库中Fragment的使用及参数传递
  3. Android集成支付----微信支付总结与封装
  4. Android(安卓)SQlite数据库常规操作
  5. Android相机开发实战
  6. Android(安卓)— 之内容提供器(Content Provider)
  7. Android(安卓)短信链接跳浏览器打开APP
  8. 【Android(安卓)数据库框架总结,总有一个适合你!】
  9. Android(安卓)使用SQLCipher对sqlite进行加解密

随机推荐

  1. android:visibility和android:scaleType
  2. 开发问题及解决 java.lang.ClassCastExce
  3. Android Binder通讯机制
  4. Android(安卓)apache httpd 终端上的服务
  5. Android试题
  6. 【so easy】Android手动打包流程,完全详细
  7. Android实现简单的计算器
  8. Android FragmentTransactionExtended:使F
  9. 重温android studio jni编译生成so文件
  10. Android中解析JSON的两种方式