IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Android】SQLite -> 正文阅读

[移动开发]【Android】SQLite

1,概述

android端提供的轻量级数据库,

2,实例I

(1)创建SQLiteOpenHelper

public class DBHelper extends SQLiteOpenHelper {

    private static DBHelper sDBHelper;

    public static void init(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        sDBHelper = new DBHelper(context, name, factory, version);
    }

    public static DBHelper getInstance() {
        if (sDBHelper == null) {
            throw new RuntimeException("DBHelper must be init!");
        }
        return sDBHelper;
    }

    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version, @Nullable DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
    }

    public DBHelper(@Nullable Context context, @Nullable String name, int version, @NonNull SQLiteDatabase.OpenParams openParams) {
        super(context, name, version, openParams);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建数据库
        db.execSQL("create table user(u_id int not null primary key,u_name varchar(50) not null,age int)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 数据库升级时回调
    }
}

(2)初始化

?(3)使用

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //原生SQLite
        DBHelper.getInstance().getWritableDatabase().execSQL("insert into table values(id,key1,key2)");
    }
}

除使用sql语句外,可以使用insert、update、delete、query方法,具体方法如下,

public long insert(String table, String nullColumnHack, ContentValues values)

//whereClause是where语句,如"id > ?" ,? 占位符在whereArgs中传入;
public int update(String table, ContentValues values, String whereClause, String[] whereArgs)

public int delete(String table, String whereClause, String[] whereArgs)

public Cursor query(boolean distinct, String table, String[] columns,
            String selection, String[] selectionArgs, String groupBy,
            String having, String orderBy, String limit)

public Cursor query(boolean distinct, String table, String[] columns,
            String selection, String[] selectionArgs, String groupBy,
            String having, String orderBy, String limit, CancellationSignal cancellationSignal) 

public Cursor query(String table, String[] columns, String selection,
            String[] selectionArgs, String groupBy, String having,
            String orderBy)

public Cursor query(String table, String[] columns, String selection,
            String[] selectionArgs, String groupBy, String having,
            String orderBy, String limit)

3,实例II

public class DataBaseHelper extends SQLiteOpenHelper {

    public static final String TAG = "DataBaseHelper";
    private static final String CREATE_TEXT_TABLE = "create table Text(id integer primary key autoincrement,"
            + "title varchar,"
            + "text text,"
            + "update_time varchar)";
    private SQLiteDatabase db;


    private DataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        Log.d(TAG, "创建db");
    }

    public static DataBaseHelper newInstance(Context context) {
        return new DataBaseHelper(context, "demo.db", null, 1);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TEXT_TABLE);
        Log.d(TAG, "创建db" + "   " + db);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public void insertText(Text text) {
        this.db = getWritableDatabase();
        String insert = "insert into Text (title,text,update_time) values(?,?,?)";
        this.db.execSQL(insert, new Object[]{text.getTitle(), text.getText(), text.getUpdate_time()});
        this.db.close();

        Log.d(TAG, "insert " + text);
    }

    public void insertDraftText(Text text) {
        deleteDraftText();
        this.db = getWritableDatabase();
        String insert = "insert into Text (id,title,text,update_time) values(-1,?,?,?)";
        this.db.execSQL(insert, new Object[]{text.getTitle(), text.getText(), text.getUpdate_time()});
        this.db.close();
        Log.d(TAG, "draft " + text);
    }

    public void deleteDraftText() {
        deleteTextById(-1);
        Log.d(TAG, "remove draft ");
    }

    public void updateText(Text text) {
        this.db = getWritableDatabase();
        String update = "update Text set title=?,text=?,update_time=? where id = ?";
        this.db.execSQL(update, new Object[]{text.getTitle(), text.getText(), text.getUpdate_time(), text.getId()});
        this.db.close();
        Log.d(TAG, "update " + text);
    }


    public void deleteTextById(int id) {
        this.db = getWritableDatabase();
        String delete = "delete from Text where id = " + id;
        db.execSQL(delete);
        this.db.close();
        Log.d(TAG, "delete " + id);
    }

    public void deleteTextByIds(List<Integer> ids) {
        this.db = getWritableDatabase();
        for (int id : ids) {
            String delete = "delete from Text where id = " + id;
            db.execSQL(delete);
            Log.d(TAG, "delete " + id);
        }
        this.db.close();
    }

    public List<Text> queryAll() {
        this.db = getReadableDatabase();
        Cursor cursor = null;
        List<Text> textList = new ArrayList<>();
        try {
            // id = -1 草稿
            cursor = db.query("Text", null, "id >= 0", null, null, null, "id desc", null);

            boolean hasNext = cursor.moveToFirst();
            while (hasNext) {
                String id = cursor.getString(cursor.getColumnIndex("id"));
                String title = cursor.getString(cursor.getColumnIndex("title"));
                String text = cursor.getString(cursor.getColumnIndex("text"));
                String update_time = cursor.getString(cursor.getColumnIndex("update_time"));
                textList.add(new Text(
                        Integer.parseInt(id),
                        title,
                        text,
                        update_time
                ));
                hasNext = cursor.moveToNext();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
        this.db.close();
        Log.d(TAG, "queryAll " + textList.toString());
        return textList;
    }

    public Text queryOneById(int id) {
        this.db = getReadableDatabase();
        Cursor cursor = null;
        Text obj = new Text();
        try {
            cursor = db.query("Text", null, "id=?", new String[]{String.valueOf(id)}, null, null, null, null);

            cursor.moveToFirst();
            String title = cursor.getString(cursor.getColumnIndex("title"));
            String text = cursor.getString(cursor.getColumnIndex("text"));
            String update_time = cursor.getString(cursor.getColumnIndex("update_time"));
            obj.setId(id);
            obj.setText(text);
            obj.setTitle(title);
            obj.setUpdate_time(update_time);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
        this.db.close();
        Log.d(TAG, "queryOneById " + obj);
        return obj;
    }
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:49:03  更:2022-02-09 20:51:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:52:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码