Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >sqlite数据库

sqlite数据库

作者头像
acc8226
发布于 2022-05-17 13:09:24
发布于 2022-05-17 13:09:24
54500
代码可运行
举报
文章被收录于专栏:叽叽西叽叽西
运行总次数:0
代码可运行
  • 创建Entry的内部类, 该类实现BaseColumns
  • tableName定义常量字符串
  • 为table的每一项什么常量字符串
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.android.waitlist.data;

import android.provider.BaseColumns;

public class WaitlistContract {

    // COMPLETED (1) Create an inner class named WaitlistEntry class that implements the BaseColumns interface
    public static final class WaitlistEntry implements BaseColumns {
        // COMPLETED (2) Inside create a static final members for the table name and each of the db columns
        public static final String TABLE_NAME = "waitlist";
        public static final String COLUMN_GUEST_NAME = "guestName";
        public static final String COLUMN_PARTY_SIZE = "partySize";
        public static final String COLUMN_TIMESTAMP = "timestamp";
    }

}

创建数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.android.waitlist.data;


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

import com.example.android.waitlist.data.WaitlistContract.*;

// COMPLETED (1) extend the SQLiteOpenHelper class
public class WaitlistDbHelper extends SQLiteOpenHelper {

    // COMPLETED (2) Create a static final String called DATABASE_NAME and set it to "waitlist.db"
    // The database name
    private static final String DATABASE_NAME = "waitlist.db";

    // COMPLETED (3) Create a static final int called DATABASE_VERSION and set it to 1
    // If you change the database schema, you must increment the database version
    private static final int DATABASE_VERSION = 1;

    // COMPLETED (4) Create a Constructor that takes a context and calls the parent constructor
    // Constructor
    public WaitlistDbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // COMPLETED (5) Override the onCreate method
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

        // COMPLETED (6) Inside, create an String query called SQL_CREATE_WAITLIST_TABLE that will create the table
        // Create a table to hold waitlist data
        final String SQL_CREATE_WAITLIST_TABLE = "CREATE TABLE " + WaitlistEntry.TABLE_NAME + " (" +
                WaitlistEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                WaitlistEntry.COLUMN_GUEST_NAME + " TEXT NOT NULL, " +
                WaitlistEntry.COLUMN_PARTY_SIZE + " INTEGER NOT NULL, " +
                WaitlistEntry.COLUMN_TIMESTAMP + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP" +
                "); ";

        // COMPLETED (7) Execute the query by calling execSQL on sqLiteDatabase and pass the string query SQL_CREATE_WAITLIST_TABLE
        sqLiteDatabase.execSQL(SQL_CREATE_WAITLIST_TABLE);
    }

    // COMPLETED (8) Override the onUpgrade method
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        // For now simply drop the table and create a new one. This means if you change the
        // DATABASE_VERSION the table will be dropped.
        // In a production app, this method might be modified to ALTER the table
        // instead of dropping it, so that existing data is not deleted.
        // COMPLETED (9) Inside, execute a drop table query, and then call onCreate to re-create it
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + WaitlistEntry.TABLE_NAME);
        onCreate(sqLiteDatabase);
    }
}

更新数据库

  1. 版本号增加
  2. 修改onCreate中执行的sql语句, onUpgrade按需求做适量更改.

检查表中某列是否存在

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     /**
     * 检查表中某列是否存在
     * @param db
     * @param tableName 表名
     * @param columnName 列名
     * @return
     */
     public static boolean checkColumnExists(SQLiteDatabase db, String tableName, String columnName) {
         boolean result = false ;
         Cursor cursor = null ;
         try{
             cursor = db.rawQuery( "select * from sqlite_master where name = ? and sql like ?"
                , new String[]{tableName , "%" + columnName + "%"} );
             result = null != cursor && cursor.moveToFirst() ;
         }catch (Exception e){
             e.printStackTrace();
         }finally{
             if(null != cursor && !cursor.isClosed()){
                 cursor.close() ;
             }
         }
         return result ;
     }

数据库的修复

比如手机程序对.db的不当操作造成. $ sqlite3 backup.sqlite sqlite> .output “_temp.tmp” sqlite> .dump sqlite> .quit

$ sqlite3 new.sqlite sqlite> .read “_temp.tmp” sqlite> .quit 就将错误的backup.sqlite修复为new.sqlite了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2014-10-31Android学习------SQLite数据库操作(四)-----数据库模块(二)增删改查
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class SQLHelper extends SQLiteOpenHelper { priv
wust小吴
2022/03/07
2420
Android SQLiteHelper
1 package com.liren.news.data;  2   3 import android.content.ContentValues;  4 import android.content.Context;  5 import android.database.Cursor;  6 import android.database.sqlite.SQLiteDatabase;  7   8 public class SQLiteHelper extends android.database.sq
用户3135539
2018/09/12
3090
2014-10-27Android学习------SQLite数据库操作(三)-----数据库模块
以后需要数据库的时候把这两个类放到一个com.xx.xx.db包下,更改里面的数据库名称等,有效的管理自己的代码
wust小吴
2022/03/07
2480
Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析
当我们完成了对数据库的操作后,记得调用SQLiteDatabase的close()方法释放数据库连接,否则容易出现SQLiteException。
Carson.Ho
2019/02/22
31K3
Android SQLite数据库基本操作
程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数据库来实现一些需求的吧。
指点
2019/01/18
1.2K0
Android SQLite数据库基本操作
Android开发笔记(三十)SQLite数据库基础操作
SQLite是一个小巧的嵌入式数据库,使用方便、开发简单,手机上最早由ios运用,后来android兴起同样也采用了sqlite。sqlite的多数sql语法与oracle是一样的,下面只列出不同的地方: 1、建表时为避免重复操作,应加上“IF NOT EXISTS”关键词,例如:CREATE TABLE IF NOT EXISTS table_name 2、同样的,删表时为避免重复操作,应加上“IF EXISTS”关键词,例如:DROP TABLE IF EXISTS table_name 3、变更表结构使用ALTER TABLE table_name ADD COLUMN ... 4、SQLite支持如下字段类型:整型INTEGER、字符串VARCHAR、浮点数FLOAT,但不支持布尔类型 5、SQLite建表时需要一个唯一标识的字段,字段名为_id,所以每建一张新表都要例行公事加上该字段定义,具体属性定义为“_id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL”
aqi00
2019/01/18
6730
android学习笔记----SQLite数据库
目录一二的增删改查源码地址:https://github.com/liuchenyang0515/CreateDB3
砖业洋__
2023/05/06
1.1K0
android学习笔记----SQLite数据库
安卓第七夜 雅典学院
我之前只使用了一种持续保存数据的方法,即SharedPreferences。然而,SharedPreferences只能存储少量松散的数据,并不适合大量数据的存储。安卓带有SQLite数据库,它是一个简单版本的关系型数据库,可以应对更复杂的数据存取需求。我将在这里说明安卓中该数据库的使用方法。这里只专注于安卓中SQLite数据库的接口使用,并没有深入关系型数据库和SQL语言的背景知识。 《雅典学院》是拉斐尔的画。他在这幅壁画中描绘了许多古典时代的哲学家,如苏格拉底、柏拉图、亚里士多德等。画中的哲学家生活在不
Vamei
2018/01/18
1.3K0
安卓第七夜 雅典学院
5.数据库
5.数据库 数据库的操作 创建数据库create database mydb ; 查看创建数据库的语句show create database mydb ; 改变当前的数据库use mydb ; 删除数据库drop database mydb ; 查看所有的数据库show databases ; 修改数据库mydb1的字符集为utf8 alter database mydb1 character set utf8 ; 针对表的操作 创建表t create table t( id int , name va
六月的雨
2018/05/14
7770
【Android】数据存储(三) 数据库(SQLite)
SQLite 前言 之前介绍过Android中保存数据的两种方式:SharedPreferences和File,这篇介绍另一种存储数据的方式——数据库。 数据库:简单来说可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 想必大家对数据库都不陌生,想当年上数据库课的时候,被那些命令整得不要不要的。 扯远了... 进入正题,在Android开发的过程中,保存数据是难免的。如果数据量较小的时候可用SharedPreferences或File来保存,当数据量较大
Gavin-ZYX
2018/05/18
1.2K0
【Android从零单排系列四十二】《Android数据存储方式-SQLite数据库》
小伙伴们,在上文中我们介绍了Android数据存储中的ContentProvider,本文我们继续盘点介绍Android开发中的另一个数据存储方式SQLite数据库。
再见孙悟空_
2023/07/17
3020
AndroidStudio制作个人资料界面模块以及SQLite数据库的使用
大家好,我是 Vic,今天给大家带来AndroidStudio制作个人资料界面模块以及SQLite数据库的使用的概述,希望你们喜欢
达达前端
2019/07/03
2.2K0
AndroidStudio制作个人资料界面模块以及SQLite数据库的使用
Android SQLite数据库
SQLiteOpenHelper 抽象类有两个抽象方法:onCreate() onUpgrade() 创建和升级数据库
SakuraTears
2022/01/13
2.2K0
Android SQLite 数据库学习
  SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本。它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需要占用几百kB的存储空间,这也是Android移动设备采用SQLite数据库的重要原因之一。
星哥玩云
2022/08/17
1.3K0
【Android开发基础系列】数据持久化专题
http://blog.csdn.net/wulianghuan/article/details/8501063
江中散人_Jun
2023/10/16
5060
【Android开发基础系列】数据持久化专题
Android开发(23)数据库升级
我这里说的数据库版本指的是: 我们的应用的程序的数据库的用户版本(user_version).比如说下面的情形:
张云飞Vir
2020/03/16
7230
2014-10-27Android学习------SQLite数据库操作(二)-----数据库的创建--SQLiteHelper extends SQLiteOpenHelper
上篇有篇文章讲了数据库的操作 条件是:数据库已经建好的了,我们只需要从里面获取数据(查询)就可以了,
wust小吴
2022/03/07
7560
2014-10-27Android学习------SQLite数据库操作(二)-----数据库的创建--SQLiteHelper extends SQLiteOpenHelper
Carson带你学Android:SQLlite数据库操作全解析(SQLiteOpenHelper类)
###4.1 具体代码如下: 建议先下载Demo再进行阅读:Carson的Github:DataBase_Demo
Carson.Ho
2022/03/24
1K0
Carson带你学Android:SQLlite数据库操作全解析(SQLiteOpenHelper类)
【Android 应用开发】Android 数据存储 之 SQLite数据库详解
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665
韩曙亮
2023/03/27
2.6K0
【Android 应用开发】Android 数据存储 之 SQLite数据库详解
利用SQLChiper对Android SQLite数据库加密
利用SQLChiper对Android SQLite数据库加密 前言: 上篇文章讲了Android studio+SQLCipher加密SQLite数据库的几个坑,跳过这几个坑,那么SQLCipher的前提就处理完成,本片文章接着讲如何使用SQLCiper加密数据库。
红目香薰
2022/11/29
9700
推荐阅读
相关推荐
2014-10-31Android学习------SQLite数据库操作(四)-----数据库模块(二)增删改查
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验