第九天
第9天Sqltie数据库
SQLite数据库介绍
轻量级 只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置 无需安装, 直接使用
嵌入式 内嵌到手机中
存放的类型
NULL 空值
INTEGER 整型(不用int)
VARCHAR 可变长度的字符数据
TEXT 文本字符串
BOOLEAN 布尔
DATE
SQL语句复习
1.创建表:
create table student(_id integer primary key autoincrement,name varchar(30),age integer,address varchar(30));
2.添加数据:
insert into student values(null,‘小嘉’,17,‘河北省北京市’);
3.修改数据:
update student set age=18,address=‘河北省北京市’ where name=‘sgf’
4 查询数据:
select * from student where 字段 = ‘值’
模糊查询: select * from 表名 where name like ‘%小%’
select * from student order by age desc 降序查询
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 求平均值
count(列名) 统计记录数
5.删除数据:
delete from student where id=1;
定义一个类, 继承SQLiteOpenHelper重写构造方法 :提供数据库的基本信息 : 上下文对象,数据库名称,Null,数据库的版本号重写父类的两个方法:onCreate(): onUpgrade()
public class MySqlHelper extends SQLiteOpenHelper {
/**
* 构造
* @param context 上下文
* @param name 数据库名称
* @param factory 创建数据的工厂对象
* @param version 数据版本号
*/
public MySqlHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 注意:onCreate方法只会执行一次,如果想要修改表的字段,
* 修改oncreate方法的话是不行的,需要删除之前生成的数据库
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20))");
}
/**
* 更新数据 --- 如果数据库的 版本号发生变化, 执行该方法 --- 执行多次
* @param db
* @param oldVersion 老版本号
* @param newVersion 新版本号
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
SQLiteDatabase 用于数据库的操作类, “操作数据库: 执行sql语句/增/删/改/查”通过SQLiteOpenHelper获取SQLiteDatabase对象
package com.example.day009.util;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.example.day009.MySqlHelper;
/**
* 封装增删改成的方法
*/
public class UserDao {
private SQLiteDatabase db;
//通过构造创建一个db;
public UserDao(Context context){
MySqlHelper mySqlHelper = new MySqlHelper(context,"user.db",null,1);
//可读可写.磁盘满了在尝试打开.(推荐使用)
db = mySqlHelper.getReadableDatabase();
//可读可写.磁盘满了,打开报错.
// db = mySqlHelper.getWritableDatabase();
}
}
//在Activity中执行命令,即可创建出来数据库
UserDao userDao = new UserDao(this);
操作数据中的值分下面两种:
(1)执行sql 语句
void execSQL(String sql,String[] bindArgs); 执行增删改
Cusor rawQuery(String sql,String[] selectionArgs); 执行查询
(2)执行方法 – 封装好的方法insert() 插入数据update() 修改数据delete() 删除数据query() 查询数据在UserDao中添加一个插入方法.
public void insert(User user){
//方法1,占位符的形式
String sql = "insert into user(name,age,address) values(?,?,?)";
// db.execSQL(sql,new Object[]{user.getName(),user.getAge(),user.getAddress()});
//方法2,系统的insert方法
ContentValues contentValues = new ContentValues();
contentValues.put("name",user.getName());
contentValues.put("age",user.getAge());
contentValues.put("address",user.getAddress());
db.insert("user",null,contentValues);
}
在UserDao中添加一个update()方法.
// 注意 参数不在是user,而是要跟新的字段和字段值
public void update(String age , int id){
//方法1
String sql = "update user set age = ? where _id=?";
// db.execSQL(sql,new Object[]{user.getAge(),user.get_id()});
//方式2
ContentValues contentValues = new ContentValues();
contentValues.put("age",age);
db.update("user",contentValues,"_id = ?",new String[]{
id+""}