一.SQLite数据库介绍
1.Android 系统中集成的轻量级的数据库
2.特点:
轻量级 只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置 无需安装, 直接使用
嵌入式 内嵌到手机中
3.在程序的内部可以通过数据库的名称访问, 其他应用不能访问
4.路径: data/data/应用程序包名/database/ ****.db
5.存放的类型:
NULL 空值
INTEGER 整型(不用int)
VARCHAR 可变长度的字符数据
TEXT 文本字符串
BOOLEAN 布尔
DATE
二.数据库核心类
1.SQLiteOpenHelper 数据库的帮助类, “用于数据库的创建和版本更新”
(1)定义一个类, 继承SQLiteOpenHelper
(2)重写构造方法 :提供数据库的基本信息 : 上下文对象,数据库名称,Null,数据库的版本号
(3)重写父类的方法:
onCreate():第一次创建数据库时调用, 只会执行一次 – “初始化表,初始化数据”
onUpgrade()
2.SQLiteDatabase 数据库的操作类, “操作数据库: 执行sql语句/增/删/改/查”
(0)获取SQLiteDatabase对象
(1)执行sql 语句
void execSQL(String sql,String[] bindArgs); 执行增删改
Cusor rawQuery(String sql,String[] selectionArgs); 执行查询
(2)执行方法 – 封装好的方法 (适用于菜鸟级别的程序员)
insert() 插入数据
update() 修改数据
delete() 删除数据
query() 查询数据
四.数据库简单代码:
//TODO 1:自定义类继承SQLiteOpenHelper 数据库帮助类:创建数据库
public class My_SQL extends SQLiteOpenHelper {
//TODO 2:构造
//参数一 上下文 参数二 数据库名称 参数三 工厂 null使用默认 参数四 版本号 1
public My_SQL(Context context) {
super(context, "student.db", null, 1);
}
//TODO 3:方法 创建表初始化数据
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table student(id integer primary key autoincrement,name varchar(10),sex varchar(5),age integer)");
db.execSQL("insert into student values(null,'张三','男',18),(null,'小明','男',28),(null,'小丽','女',17)");
}
//数据库版本更新不用写
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
数据库操作代码
/**
* 一。创建数据库+创建表:SQLiteOpenHelper
* create table 表名(id integer primary key autoincrement,name varchar(30),age integer)
*
*
*二。操作数据SQLiteDatabase
void execSQL(String sql,String[] bindArgs); 执行增删改
Cusor rawQuery(String sql,String[] selectionArgs); 执行查询
*
* */
public class MainActivity extends AppCompatActivity {
Button bt1,bt2,bt3,bt4;
SQLiteDatabase student;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.add);
bt2 = findViewById(R.id.dlet);
bt3 = findViewById(R.id.update);
bt4 = findViewById(R.id.find);
//创建数据库帮助类实例对象
My_SQL my_sql = new My_SQL(this);
student = my_sql.getWritableDatabase();
//增加数据
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// student.execSQL("insert into student values(null,?,?,?)",new Object[]{"张飞","男",35});
ContentValues contentValues = new ContentValues();
contentValues.put("name","赵子龙");
contentValues.put("age","23");
long num = MainActivity.this.student.insert("student", null, contentValues);
}
});
//删除数据
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num = MainActivity.this.student.delete("student", "age<?", new String[]{"18"});
}
});
//修改数据
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ContentValues contentValues = new ContentValues();
contentValues.put("age","15");
student.update("student",contentValues,"name = ?",new String[]{"张飞"});
}
});
//查找数据
bt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Cursor cursor = student.rawQuery("select * from student", null);
Cursor cursor = MainActivity.this.student.query("student", null, null, null, null, null, null);
while (cursor.moveToNext()){
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String sex = cursor.getString(cursor.getColumnIndex("sex"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.e("stu",id+" "+name+" "+sex+" "+age);
}
}
});
}
}