小型的、可嵌入、开源的关系型数据库,效率高,无数据类型,支持事务操做,程序驱动。java
Integer、varchar(10)、float、double、char(10)、text
create table 表名(字段名称 数据类型 约束, 字段类型,数据类型 约束...) create table person(_id Integer primary key, name varchar(10), age Integer not null)
### 2.2 删除表android
drop table 表名 drop table person
### 2.3 插入数据sql
insert into 表名[字段,字段] values(值1,值2) insert into person(_id, age) values(1, 20) insert into values(2, "zs", 30)
### 2.4 修改数据数据库
update 表名 set 字段=新值 where 修改的条件 update person set name="ls", age = 20, where _id = 1
delete from 表名 where 删除的条件 delete from person from where _id = 2
select 字段名 from 表名 where 查询条件 group by 分组的字段 having 筛选条件 order by 排序字段 select * from person; select _id, name from person select * from person where _id = 1 select * from person where _id <> 1 select * from person where _id = 1 and age > 18 select * from person where name like "%小%" select * from person where name like "_小%" select * from person where name is null select * from person where name age between 10 and 20 select * from person where age > 18 order by _id
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="18dp" android:paddingRight="18dp" android:paddingLeft="40dp" android:paddingTop="50dp" android:orientation="vertical" tools:context=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="建立数据库" android:onClick="createDb" android:background="@android:color/holo_blue_dark"/> <Button android:id="@+id/btn_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="插入数据" android:onClick="click" android:background="@android:color/holo_blue_dark" android:layout_marginTop="20dp"/> <Button android:id="@+id/btn_update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改数据" android:onClick="click" android:layout_marginTop="20dp" android:background="@android:color/holo_blue_dark"/> <Button android:id="@+id/btn_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除数据" android:onClick="click" android:background="@android:color/holo_blue_dark" android:layout_marginTop="20dp"/> <Button android:id="@+id/btn_insertApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="插入数据API" android:onClick="onClick" android:background="@android:color/holo_blue_dark" android:layout_marginTop="20dp"/> <Button android:id="@+id/btn_updateApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改数据API" android:onClick="onClick" android:background="@android:color/holo_blue_dark" android:layout_marginTop="20dp"/> </LinearLayout>
/** * 1. 提供了onCreate() onUpgrade()等建立数据库更新数据库的方法 * 2. 提供了获取数据库对象的函数 */ public class MySqlitHelper extends SQLiteOpenHelper { /** * 构造函数 * @param context 上下文对象 * @param name 当前建立数据库的名称 * @param factory 游标工厂 * @param version 表示建立的数据库的版本 >= 1 */ public MySqlitHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public MySqlitHelper(Context context) { super(context, Constant.DATABASE_NAME, null, Constant.DATABASE_VERSION); } /** * 当数据库建立时回调的函数 * @param db 数据库对象 */ @Override public void onCreate(SQLiteDatabase db) { Log.i("tag", "--------onCreate--------"); String sql = "create table " + Constant.TABLE_NAME + "(" + Constant._ID + " Integer primary key, " + Constant.NAME + " varchar(10), " + Constant.AGE +" Integer)"; db.execSQL(sql); } /** * 当数据库版本更新时回调的函数 * @param sqLiteDatabase 数据库对象 * @param i 数据库旧版本 * @param i1 数据库新版本 */ @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } /** * 当数据库打开时回调的函数 * @param db */ @Override public void onOpen(SQLiteDatabase db) { Log.i("tag:", "-----------onOpen-------------"); super.onOpen(db); } }
/** * 主要是对数据库操做的工具类 */ public class DbManager { private static MySqlitHelper helper; public static MySqlitHelper getInstance(Context context) { if (helper == null) { helper = new MySqlitHelper(context); } return helper; } /** * 根据sql语句在数据库中执行语句 * @param db 数据库对象 * @param sql sql语句 */ public static void execSQL(SQLiteDatabase db, String sql) { if (db != null) { if (sql != null && !"".equals(sql)) { db.execSQL(sql); } } } }
public class Constant { public static final String DATABASE_NAME = "info.db"; public static final int DATABASE_VERSION = 1; public static final String TABLE_NAME = "person"; public static final String _ID = "_id"; public static final String NAME = "name"; public static final String AGE = "age"; }
package com.example.sqlitedemo; import androidx.appcompat.app.AppCompatActivity; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private MySqlitHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = DbManager.getInstance(this); } /** * 点击按钮建立数据库 */ public void createDb(View view) { /** * 建立或打开数据库,若是数据不存在则建立数据库,若是数据存在则直接打开数据库 * 默认状况下,两个函数都表示打开过着建立可读可写的数据库对象,若是磁盘已满或者是数据自己权限等状况下 * getReadableDatabase()打开的是只读数据库 */ SQLiteDatabase db = helper.getWritableDatabase(); } public void click(View view) { switch (view.getId()) { case R.id.btn_insert: SQLiteDatabase db = helper.getWritableDatabase(); String sql = "insert into "+Constant.TABLE_NAME+" values(1, 'zhangsan', 20)"; DbManager.execSQL(db, sql); String sql2 = "inert into "+Constant.TABLE_NAME+" values(2, 'lisi', 25)"; DbManager.execSQL(db, sql2); db.close(); break; case R.id.btn_update: db = helper.getWritableDatabase(); String updateSql = "update person set name = 'xiaoming' where _id = 1"; DbManager.execSQL(db, updateSql); db.close(); break; case R.id.btn_delete: db = helper.getWritableDatabase(); String delSql = "delete from person where _id = 2"; DbManager.execSQL(db, delSql); db.close(); break; } } public void onClick(View view) { SQLiteDatabase db = helper.getWritableDatabase(); switch (view.getId()) { case R.id.btn_insertApi: /** * insert(String table, String nullColumnHack, ContentValues values) */ ContentValues values = new ContentValues(); values.put(Constant._ID, 3); values.put(Constant.NAME, "张三"); values.put(Constant.AGE, 30); long result = db.insert(Constant.TABLE_NAME, null, values); if (result > 0) { Toast.makeText(this, "插入数据成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "插入数据失败", Toast.LENGTH_SHORT).show(); } case R.id.btn_updateApi: /** * update(String table, ContentValues values, String whereClause, String[] whereArgs) * 返回值表示修改的条数 */ ContentValues cv = new ContentValues(); cv.put(Constant.NAME, "小木"); // 须要修改的字段名称,修改后的字段值 int count = db.update(Constant.TABLE_NAME, cv, "_id=?", new String[]{"3"}); } } }