Android数据存储方式之SQLite(1、SQLiteDatabase)
来源:互联网 发布:3d头像制作软件 编辑:程序博客网 时间:2024/04/30 02:24
1、SQLite简介
2、SQLite特点
3、SQLite支持的数据类型
4、SQLite常用方法
Android中我们使用两个类来进行数据库操作:
4.1、SQLiteDatabase
代码实现:
通过openOrCreateDatabase()语句我们可以创建或者打开一个数据库其中三个参数分别为(”数据库名”,模式(可选私有,可读,可写),工厂模式)调用该方法回返回一个SQLiteDatabase类的对象。并且每一个程序都有自己的数据库,默认情况下相互不干扰。
运行一下该程序我们可以通过DDMS中可以看到系统已经为我们创建好了一个数据库。
有了数据库之后我们这里就需要创建表:1、通过SQL语句创建一个主键为integer类型并且主键自增,三个字段分别为’name’,’age,’sex’三个字段并且不能为空。(主键名建议使用下划线开头)。
2、下面我们使用SQL语句javadb.execSQL("insert into usertb(name,age,sex)values('德罗巴','18','男')");
db.execSQL("insert into usertb(name,age,sex)values('魔兽','19','男')");
db.execSQL("insert into usertb(name,age,sex)values('非洲刘德华','20','男')");
db.execSQL("insert into usertb(name,age,sex)values('木鸟','21','男')");
把数据插入到数据库中。
有了数据之后我们就可以在Android中对数据进行查询
Cursor c = db.rawQuery("select * from usertb", null);
执行上面一条语句返回的是一个Cursor对象
Cursor类的相关方法:
上面语句中我们首先判断Cursor对象是否为空,使用moveToNext()方法若存在数据那么就执行循环,使用日志打印首先使用c.getXXX()方法得到我们要返回的数据类型,在其中传入一个参数为c.getColumnIndex(“字段名”)就可以得到我们要查询的数据库结果。最后记得关闭Cursor对象以及数据库对象释放内存资源
完整代码如下:
package com.example.liujing.sqlitedemo;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null); db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, " + "name text not null, age integer not null,sex text not null)"); db.execSQL("insert into usertb(name,age,sex)values('德罗巴','18','男')"); db.execSQL("insert into usertb(name,age,sex)values('魔兽','19','男')"); db.execSQL("insert into usertb(name,age,sex)values('非洲刘德华','20','男')"); db.execSQL("insert into usertb(name,age,sex)values('木鸟','21','男')"); //查询数据库 Cursor c = db.rawQuery("select * from usertb", null); if(c!=null){ while(c.moveToNext()){ Log.i("tag","_id:"+c.getInt(c.getColumnIndex("_id"))); Log.i("tag","name:"+c.getString(c.getColumnIndex("name"))); Log.i("tag","age:"+c.getInt(c.getColumnIndex("age"))); Log.i("tag", "sex:" + c.getString(c.getColumnIndex("sex"))); } c.close(); } db.close(); }}
不熟悉SQL语句?Android中还给我们提供了一个ContentValues对象来让我们操作数据库,代码如下:
package com.example.liujing.sqlitedemo;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null); db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, " + "name text not null, age integer not null,sex text not null)");// db.execSQL("insert into usertb(name,age,sex)values('德罗巴','18','男')");// db.execSQL("insert into usertb(name,age,sex)values('魔兽','19','男')");// db.execSQL("insert into usertb(name,age,sex)values('非洲刘德华','20','男')");// db.execSQL("insert into usertb(name,age,sex)values('木鸟','21','男')");// //查询数据库// Cursor c = db.rawQuery("select * from usertb", null);// if(c!=null){// while(c.moveToNext()){// Log.i("tag","_id:"+c.getInt(c.getColumnIndex("_id")));// Log.i("tag","name:"+c.getString(c.getColumnIndex("name")));// Log.i("tag","age:"+c.getInt(c.getColumnIndex("age")));// Log.i("tag", "sex:" + c.getString(c.getColumnIndex("sex")));// }// c.close();// }// db.close(); //首先创建一个ContentValues对象 ContentValues cv = new ContentValues(); //使用put()方法两个参数分别为数据库的字段名,插入的数据(类似hashmap的键值对,键是表的列名,值是插入的数据) cv.put("name", "王尼玛"); cv.put("age", 22); cv.put("sex", "男女男"); //特别提示如果需要继续插入下一条数据这里我们首先要使用clear()方法清空一次然后在写入数据 //最后执行数据库插入,三个参数分别为表名,默认值设为null,插入的对象. db.insert("usertb", null, cv); cv.clear(); cv.put("name", "敖厂长"); cv.put("age", 23); cv.put("sex", "男"); db.insert("usertb", null, cv); cv.clear(); cv.put("name", "张全蛋"); cv.put("age", 24); cv.put("sex", "男神"); db.insert("usertb", null, cv); cv.clear(); //修改性别为女 cv.put("sex", "女"); //将id>1的性别改成女 db.update("usertb", cv, "_id>?", new String[]{"1"}); //删除所有名字带尼的数据 db.delete("usertb","name like ?",new String[]{"%尼%"}); Cursor c = db.rawQuery("select * from usertb", null); if (c != null) { while (c.moveToNext()) { Log.i("tag", "_id:" + c.getInt(c.getColumnIndex("_id"))); Log.i("tag", "name:" + c.getString(c.getColumnIndex("name"))); Log.i("tag", "age:" + c.getInt(c.getColumnIndex("age"))); Log.i("tag", "sex:" + c.getString(c.getColumnIndex("sex"))); } c.close(); } db.close(); }}
- Android数据存储方式之SQLite(1、SQLiteDatabase)
- Android数据存储方式之 SQLite
- Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase
- Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase
- 数据存储之SQLiteDatabase
- Android-SQLiteDatabase数据存储
- 使用SQLiteDatabase操作SQLite数据库存储数据
- 使用嵌入式关系型SQLite数据库存储数据之使用SQLiteDatabase操作SQLite数据库
- Android数据的四种存储方式之 SQLite
- Android数据的四种存储方式之SQLite数据库
- 【Android】数据存储之SQLite
- android数据存储之SQLite
- Android数据存储之SQLite
- Android数据存储之SQLite
- Android数据存储之SQLite
- Android之SQLite 数据存储
- Android之SQLite 数据存储
- Android 数据存储之SQLite
- jdk与jre的区别
- 《魔灵保卫者》服务端架构及实现
- 响应者
- 大整数类加减乘除的简单实现——C++
- 2015年在微信热传的100+经典技术文章-读书笔记
- Android数据存储方式之SQLite(1、SQLiteDatabase)
- JS获取时间差
- 基本概念
- eval()函数的使用
- Oracle 最简单的随系统自动启动
- token验证失败
- Angular.js(出库列表页)
- gmapping An Incomplete Scan Matching Tutorial
- Struts2中Action中指定方法的调用(动态调用)