当前位置:Gxlcms > 数据库问题 > 数据储存方式-SQLite

数据储存方式-SQLite

时间:2021-07-01 10:21:17 帮助过:2人阅读

SQLite 是用C语言编写的开源嵌入式数据库引擎。支持太多数的SQL92biaozhun,并且 可以再所有主要的操作系统上运行。
  • 支持高达2TB大小的数据库
  • 以单个文件的形式存在
  • 以B-Tree的数据结构形式存储在磁盘里

特点:
  1. 轻量级 一个动态库、单文件
  2. 独立性 没有依赖、无需安装
  3. 隔离性 全部在一个文件夹中
  4. 跨平台 支持众多操作系统
  5. 多语言接口 支持众多编程语言
  6. 安全性 事务

事务处理的安全性问题:
  • 通过数据库上的独占性和共享锁实现独立事务处理
  • 多个进程可以再同一时间从同一数据库读取数据,但是只能有一个可以写入数据

SQLite的数据类型:
  • NULL 、INTEGR、REAL、TEXT和BLOB数据类型
  • 空值、整形值、浮点值、字符串值、二进制值
动态数据类型(弱引用)      当某个值插入到数据库,SQLite将会检查它的类型,如果该类型与关联的列不匹配, SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储。

SQLiteDatabase: 提供一些管理SQLite数据库的类 提供创建,删除,执行SQL命令,并执行其他常见的数据库管理任务的方法 每个程序的数据库名字是惟一的  
  • execSQL(sql)
  • insert(table,nullColumnHack,values)
  • delete(table,whereClause,whereArgs)
  • update(table,values,whereClause,whereArgs)
  • query(table,columns,selection,selectionArgs,groupBy,having,orderBy)
  • rawQuery(sql,selectionArgs)

example:--------------------------------------------------------------------------------------------  //每个程序都有自己的数据库,一般情况下互不干扰
  //创建一个数据库并且打开
  SQLiteDatabase db =  openOrCreateDatabase("user.db",MODE_PRIVATE, null);
  db.execSQL("create table if not exites usertb(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");
  db.execSQL("insert into usertb(name,sex,age)values(‘张三‘,‘男‘,‘18‘)");
  db.execSQL("insert into usertb(name,sex,age)values(‘李四‘,‘女‘,‘19‘)");
  db.execSQL("insert into usertb(name,sex,age)values(‘王五‘,‘男‘,‘20‘)");
  Cursor c=db.rawQuery("select * form usertb", null);
  if(c!=null)
  {
   while(c.moveToNext())
   {
    Log.i("info",""+c.getInt(c.getColumnIndex("_id")));
    Log.i("info",""+c.getString(c.getColumnIndex("name")));
    Log.i("info",""+c.getInt(c.getColumnIndex("age")));
    Log.i("info",""+c.getString(c.getColumnIndex("sex")));
   }
   c.close();
  }
  db.close(); ---------------------------------------------------------------------------------------------------------------

ContentValues:
  • 用来存储一组可以被ContentResolver处理的值。
  • ContentValues value = newContentValues();
    • //类似 hashMap key value
  • values.put (“key”,“values”);
example: ---------------------------------------------------------------------------------------------------------------   SQLiteDatabase db= openOrCreateDatabase("stu.db", MODE_PRIVATE, null);
  db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,sex text not null,age integet not null)");
  ContentValues values = new ContentValues();
  values.put("name", "王尼玛");
  values.put("sex", "男");
  values.put("age", 20);
  db.insert("stutb", null, values);
  values.clear();
  values.put("name", "李尼玛");
  values.put("sex", "男");
  values.put("age", 22);
  db.insert("stutb", null, values);
  values.clear();
  values.put("sex", "女");
  db.update("stutb", values, "_id>?", new String[]{"0"});
  db.delete("stutb", "name like ?", new String[]{"%王%"});
  Cursor c =db.query("stutb", null, "_id>?", new String[]{"0"}, null, null, "name");
  if(c!=null)
  {
   String []columns= c.getColumnNames();
   while(c.moveToNext())
   {
    for(String columnName :columns)
    {
     Log.i("info", c.getString(c.getColumnIndex(columnName)));
    }
   }
  }
 } ------------------------------------------------------------------------------------------------------------------------------------------- SQLiteOpenHelper:
  • SQLiteDatabase的帮助类,用于管理数据库的创建和版本更新
  • 一般用法是建立一个类继承它,并且重写onCreate()和onUpgrade()方法
  • onCreate(SQLiteDatabase db) 创建数据库调用,
  • inUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) 版本更新时调用
  • getReadableDatabase()创建或打开一个只读数据库
  • getWriteDatabase()创建或者打开一个读写数据库




数据储存方式-SQLite

标签:

人气教程排行