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 打开 可读的数据库

 

posted @ 2021-02-08 22:32  靠谱杨  阅读(69)  评论(0编辑  收藏  举报