2020-04-09-星期四-第八周
目 录
创建数据库
insert()方法
查看数据库(Save as保存)
菜鸟教程---SQLite数据库
6.3.1 数据存储与访问之——初见SQLite数据库
https://www.runoob.com/w3cnote/android-tutorial-sqlite-intro.html
根据 列索引 获取 参数值
列比较多---根据列名,返回索引
删除数据
query
简单方式(增删改查)
插入数据、删除数据、修改数据
查询数据
数据分页(偏移量、取得数据的数量)、查询记录数
修改数据表结构
MyHelp.java代码
package cn.wangzg.course0802;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
/**
* Time: 2020/4/9
* Author: wangzhiguo
* Description: 功能描述
*/
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(@Nullable Context context) {
super(context, "mydb.db", null, 2);//创建数据库
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据表,只有第一次时执行
db.execSQL("create table person(id integer primary key autoincrement," +
"name varchar(20),age int,zy);");
System.out.println("----------111111-----------");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("----------" + newVersion + "-----------");
db.execSQL("alter table person add column zy;");
}
}
android-Room框架
Google官方文档
https://developer.android.google.cn/training/data-storage/room
Room-3大组件
MainActivity.java代码
package cn.wangzg.course0802;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private MyHelper helper;
private TextView tvSqlite;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = new MyHelper(this);
tvSqlite = findViewById(R.id.tv_sqlite);
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "dbroom.db")
.allowMainThreadQueries().build();
User user1 = new User();
user1.firstName = "aaa";
user1.lastName = "bbb";
user1.uid = 3;
User user2 = new User();
user2.firstName = "ccc";
user2.lastName = "ddd";
user2.uid = 2;
db.userDao().insertAll(user1, user2);
List<User> users = db.userDao().getAll();
for (User u : users) {
System.out.println(u.firstName + "---" + u.lastName);
}
}
public void btnInsert(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
//ContentValues等同于Map
ContentValues values = new ContentValues();
values.put("name", "aaaa");//key:必须为数据表的列名
values.put("age", 23);
//nullColumnHack:插入时需要忽略的列
db.insert("person", null, values);
}
public void btnUpdate(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
//values.put("name","aaaa");
values.put("age", 25);
/**
* update table
* set xxx=?,xxx=? --values
* where xxx=?
*/
db.update("person", values, "name=?", new String[]{"aaaa"});
}
public void btnDelete(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
/**
* delete table
* where xxx=?
*/
db.delete("person", "age<?", new String[]{"30"});
}
public void btnQuery(View view) {
SQLiteDatabase db = helper.getReadableDatabase();
/**
* select *
* from table
* where name=? and age=?
* group by
* having
* order
*/
Cursor cursor = db.query("person", null, null, null,
null, null, null);
if (cursor == null) return;
int nameIndex = cursor.getColumnIndex("name");
int ageIndex = cursor.getColumnIndex("age");
while (cursor.moveToNext()) {
String name = cursor.getString(nameIndex);
int age = cursor.getInt(ageIndex);
tvSqlite.setText(name + " " + age);
//System.out.println(name);
}
cursor.close();
}
}