安卓数据存储除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据。
1.建表;
private SQLiteDatabase db;
db=SQLiteDatabase.openOrCreateDatabase(getFilesDir()+"/gg.db",null);
String sql="create table tbl_user3(_id integer primary key autoincrement,name,passwd)";
db.execSQL(sql);
2.增加数据
* 第一个参数:表的名字
* 第二个参数:字段的值永远为空值,一般为null
* 第三个参数:ContentValues对象
ContentValues values=new ContentValues();
values.put("name","这是名字3333");
values.put("passwd","这是个密码");
db.insert("tbl_user3",null, values);
3.查询数据
* 第一个参数:是否去除重复的值
* 第二个参数:表的名字
* 第三个参数:要查询的字段名 ,类似于select id,name....
* 第四个参数:查询条件 类似于 name=?
* 第五个参数:占位符的值
* 第六个参数:分组查询
* 第七个参数:组函数的过滤条件
* 第八个参数:按照指定的顺序显示数据 _id desc 降序 asc 升序
* 第九个参数:分页处理 "5,10"
Cursor cursor = db.query(false,"tbl_user3",new String[]{"name","passwd"},"_id=?",new String[]{"1"},null,null,"_id asc",null);
while(cursor.moveToNext()){
// int id=cursor.getInt(cursor.getColumnIndex("_id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String passwd=cursor.getString(cursor.getColumnIndex("passwd"));
Log.i("Fourth2Activiy",name+":"+passwd);}
4.更新数据
* 第一个参数:表的名字
* 第二个参数:ContentValues的值
* 第三个参数:查询条件
* 第四个参数:占位符的值
ContentValues values=new ContentValues();
values.put("name","briup2");
values.put("passwd","456");
db.update("tbl_user2", values,"_id=?",new String[]{"1"});
5.删除表
db.delete("tbl_user2","_id=?",new String[]{"1"});
6. 小结:
嵌入式关系型SQLite数据库存储数库
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据。
在Android平台上,集成了一个嵌入式关系型数据库—SQLite,
1、SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
2、SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。
3、但有一种情况例外:定义为INTEGERPRIMARY KEY的字段只能存储64位整数,当向这种字段中保存除整数以外的数据时,将会产生错误。
4、另外, SQLite 在解析CREATETABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略 name字段的类型信息:
查表的可视化工具 http://download.youkuaiyun.com/detail/qq_33599978/9726934
在Android平台上,集成了一个嵌入式关系型数据库—SQLite,
1、SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
2、SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。
3、但有一种情况例外:定义为INTEGERPRIMARY KEY的字段只能存储64位整数,当向这种字段中保存除整数以外的数据时,将会产生错误。
4、另外, SQLite 在解析CREATETABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略 name字段的类型信息:
代码小案例:
package com.briup.androiddatasave;
import com.briup.utils.ToastUtil;
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;
import android.view.Menu;
import android.view.MenuItem;
/**
* 使用Androdi的API完成Sqlite数据库的增删改查
* @author cll
*
*/
public class MainActivity extends Activity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fourth2);
db=SQLiteDatabase.openOrCreateDatabase(getFilesDir()+"/gg.db",null);
String sql="create table tbl_user3(_id integer primary key autoincrement,name,passwd)";
db.execSQL(sql);
ToastUtil.showToast(this,"建表成功");
//添加数据
addData();
ToastUtil.showToast(this,"插入数据成功");
//查询数据
queryData();
ToastUtil.showToast(this,"查询数据成功");
//修改数据
updateData();
ToastUtil.showToast(this,"修改数据成功");
//删除数据
deleteData();
}
//删除数据
private void deleteData() {
/**
* 第一个参数:表的名字
* 第二个参数:查询条件
* 第三个参数:占位符的值
*
*/
db.delete("tbl_user2","_id=?",new String[]{"1"});
}
//修改数据
private void updateData() {
/**
* 第一个参数:表的名字
* 第二个参数:ContentValues的值
* 第三个参数:查询条件
* 第四个参数:占位符的值
*
*/
ContentValues values=new ContentValues();
values.put("name","briup2");
values.put("passwd","456");
db.update("tbl_user2", values,"_id=?",new String[]{"1"});
}
//查询数据
private void queryData() {
/**
* 第一个参数:是否去除重复的值
* 第二个参数:表的名字
* 第三个参数:要查询的字段名 ,类似于select id,name....
* 第四个参数:查询条件 类似于 name=?
* 第五个参数:占位符的值
* 第六个参数:分组查询
* 第七个参数:组函数的过滤条件
* 第八个参数:按照指定的顺序显示数据 _id desc 降序 asc 升序
* 第九个参数:分页处理 "5,10"
*
*/
Cursor cursor = db.query(false,"tbl_user3",new String[]{"name","passwd"},"_id=?",new String[]{"1"},null,null,"_id asc",null);
while(cursor.moveToNext()){
// int id=cursor.getInt(cursor.getColumnIndex("_id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
String passwd=cursor.getString(cursor.getColumnIndex("passwd"));
Log.i("Fourth2Activiy",name+":"+passwd);
}
}
//添加数据
private void addData() {
/**
* 第一个参数:表的名字
* 第二个参数:字段的值永远为空值,一般为null
* 第三个参数:ContentValues对象
*/
ContentValues values=new ContentValues();
values.put("name","这是名字3333");
values.put("passwd","这是个密码");
db.insert("tbl_user3",null, values);
}
}