zoukankan      html  css  js  c++  java
  • sqlite操作

     1 /** 
     2   * 创建数据库子类,继承自SQLiteOpenHelper类
     3   * 需 复写 onCreat()、onUpgrade()
     4   */ 
     5 public class DatabaseHelper extends SQLiteOpenHelper {
     6 
     7     // 数据库版本号
     8     private static Integer Version = 1;
     9 
    10     /** 
    11      * 构造函数
    12      * 在SQLiteOpenHelper的子类中,必须有该构造函数
    13      */ 
    14     public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
    15                           int version) {
    16         // 参数说明
    17         // context:上下文对象
    18         // name:数据库名称
    19         // param:一个可选的游标工厂(通常是 Null) 
    20         // version:当前数据库的版本,值必须是整数并且是递增的状态
    21 
    22         // 必须通过super调用父类的构造函数
    23         super(context, name, factory, version);
    24     }
    25     
    26     /** 
    27      * 复写onCreate()
    28      * 调用时刻:当数据库第1次创建时调用
    29      * 作用:创建数据库 表 & 初始化数据
    30      * SQLite数据库创建支持的数据类型: 整型数据、字符串类型、日期类型、二进制
    31      */ 
    32     @Override
    33     public void onCreate(SQLiteDatabase db) {
    34               // 创建数据库1张表
    35               // 通过execSQL()执行SQL语句(此处创建了1个名为person的表)
    36               String sql = "create table person(id integer primary key autoincrement,name varchar(64),address varchar(64))"; 
    37               db.execSQL(sql); 
    38 
    39               // 注:数据库实际上是没被创建 / 打开的(因该方法还没调用)
    40               // 直到getWritableDatabase() / getReadableDatabase() 第一次被调用时才会进行创建 / 打开 
    41     }
    42 
    43     /** 
    44      * 复写onUpgrade()
    45      * 调用时刻:当数据库升级时则自动调用(即 数据库版本 发生变化时)
    46      * 作用:更新数据库表结构
    47      * 注:创建SQLiteOpenHelper子类对象时,必须传入一个version参数,该参数 = 当前数据库版本, 若该版本高于之前版本, 就调用onUpgrade()
    48      */ 
    49 
    50     @Override
    51     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    52         // 参数说明: 
    53         // db : 数据库 
    54         // oldVersion : 旧版本数据库 
    55         // newVersion : 新版本数据库 
    56 
    57         // 使用 SQL的ALTER语句
    58         String sql = "alter table person add sex varchar(8)";  
    59         db.execSQL(sql);  
    60     }
    61 
    62 }

    SQLiteOpenHelper类 常用方法

     1 /** 
     2   *  创建数据库
     3   */ 
     4  // 1. 创建 or 打开 可读/写的数据库(通过 返回的SQLiteDatabase对象 进行操作)
     5  getWritableDatabase()
     6 
     7  // 2. 创建 or 打开 可读的数据库(通过 返回的SQLiteDatabase对象 进行操作)
     8  getReadableDatabase()
     9 
    10  // 3. 数据库第1次创建时 则会调用,即 第1次调用 getWritableDatabase() / getReadableDatabase()时调用
    11  // 在继承SQLiteOpenHelper类的子类中复写
    12  onCreate(SQLiteDatabase db) 
    13 
    14  // 4. 数据库升级时自动调用
    15  // 在继承SQLiteOpenHelper类的子类中复写
    16  onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    17 
    18  // 5. 关闭数据库
    19  close()
    20 
    21  /** 
    22   *  数据库操作(增、删、减、查)
    23   */ 
    24  // 1. 查询数据
    25  (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)  
    26  // 查询指定的数据表返回一个带游标的数据集。
    27  // 各参数说明: 
    28  // table:表名称 
    29  // colums:列名称数组 
    30  // selection:条件子句,相当于where 
    31  // selectionArgs:条件语句的参数数组 
    32  // groupBy:分组 
    33  // having:分组条件 
    34  // orderBy:排序类 
    35  // limit:分页查询的限制 
    36  // Cursor:返回值,相当于结果集ResultSet 
    37 
    38  (Cursor) rawQuery(String sql, String[] selectionArgs) 
    39  //运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别 = 防止SQL注入)
    40 
    41  // 2. 删除数据行  
    42  (int) delete(String table,String whereClause,String[] whereArgs) 
    43  
    44  // 3. 添加数据行 
    45  (long) insert(String table,String nullColumnHack,ContentValues values) 
    46  
    47  // 4. 更新数据行 
    48 (int) update(String table, ContentValues values, String whereClause, String[] whereArgs) 
    49  
    50  // 5. 执行一个SQL语句,可以是一个select or 其他sql语句 
    51  // 即 直接使用String类型传入sql语句 & 执行
    52  (void) execSQL(String sql) 

    创建数据库

    1 // 步骤1:创建DatabaseHelper对象
    2  // 注:此时还未创建数据库
    3  SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_carson");
    4 
    5 // 步骤2:真正创建 / 打开数据库
    6  SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase(); // 创建 or 打开 可读/写的数据库
    7  SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase(); // 创建 or 打开 可读的数据库
  • 相关阅读:
    3名百度 ,京东,腾讯被辞退的高级Android工程师现在怎么了?30岁真的是“罪”吗
    Python 开发者在迁移到 Go 前需要知道的事情
    centos7 常用命令--查看当前用户的4种方法
    Centos7找不到ifconfig和netstat命令
    Centos 7 修改日期和时间的命令
    如何利用MobaX同时处理多台虚拟机输入相同命令如何利用MobaX同时处理多台虚拟机输入相同命令
    配置坑了我好久:Logback按天生成文件失效
    quartz系列文章
    SpringBoot使用多实例QUARTZ出现重复执行问题
    IDEA多个springboot项目启动修改端口
  • 原文地址:https://www.cnblogs.com/rainbow-1/p/14391336.html
Copyright © 2011-2022 走看看