android 数据库 SQLtie
数据库的介绍:
Android 系统中集成的轻量级的数据库
轻量级 只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置 无需安装, 直接使用
嵌入式 内嵌到手机中
SQL语句的俩个核心类:
SQLiteOpenHelper
1.创建一个类 继承SQLiteOpenHelper
package com.example.day09;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Mysqlhelp extends SQLiteOpenHelper {
public Mysqlhelp(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 构造
* @param context 上下文
* @param name 数据库名称
* @param factory 创建数据的工厂对象
* @param version 数据版本号
*/
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table user" +
"(id integer primary key autoincrement," +
"name varchar(20)," +
"age integer)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
oncreate在这个方法中创建数据库的数据表
重点:(创建表的格式):create table 表名 (这里面填写数据)
主键:primary key
自增:autoincrement
配套使用
SQLiteDatabase
他是用来对数据库进行操作。。(增,删,改,查)
通过SQLiteOpenHelper获取SQLiteDatabase对象
//创建SQL数据库
Mysqlhelp mysqlhelp = new Mysqlhelp(this, "user.db", null, 1);
//操作
readableDatabase = mysqlhelp.getReadableDatabase();
用对象来进行操作
//添加
public void click(View view) {
//添加一条新数据
//原生SQL
String sql = "insert into user values(null,?,?)";
readableDatabase.execSQL(sql,new Object[]{"kun",20});
//这是安卓自带
ContentValues contentValues = new ContentValues();
contentValues.put("name","jia");
contentValues.put("age",123);
// readableDatabase.insert("user",null,contentValues);
}
//更新数据库
public void clicck(View view) {
//原生SQL
String sql = "update user set name = ? where id = ?";
readableDatabase.execSQL(sql,new Object[]{"小小明",6});
//这是安卓自带
ContentValues contentValues = new ContentValues();
contentValues.put("name","xiaoming");
int user = readableDatabase.update("user", contentValues, "id = ?", new String[]{"1"});
}
//删除
public void cliccck(View view) {
//这是原生
String sql = "delete from user where id = ?";
readableDatabase.execSQL(sql,new Object[]{5});
//这是安卓自带
readableDatabase.delete("user","id = ?",new String[]{"5"});
}
//查找
public void clicccck(View view) {
// String sql = "select * from user where id = ?";
// Cursor cursor = readableDatabase.rawQuery(sql, new String[]{"2"});
// if(cursor != null){
// while(cursor.moveToNext()){
// String name = cursor.getString(cursor.getColumnIndex("name"));
// Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
// }
// }
// else {
// Toast.makeText(this, "无", Toast.LENGTH_SHORT).show();
// }
// cursor.close();
Cursor user = readableDatabase.query("user", null, null, null, null, null, null);
if(user != null){
while(user.moveToNext()){
String name = user.getString(user.getColumnIndex("name"));
String id = user.getString(user.getColumnIndex("id"));
String age = user.getString(user.getColumnIndex("age"));
entity entity = new entity();
entity.setId(Integer.parseInt(id));
entity.setName(name);
entity.setAge(Integer.parseInt(age));
Log.i("123456",entity.toString());
}
}
user.close();
}
// 最后我们需要封装一个类 将数据放在里面:(一般情况下。。类名是entity)
package com.example.day09.entity;
public class entity {
private Integer id;
private String name;
private Integer age;
public entity(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public entity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "entity{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
//用封装的类的get,set方法封装