Android Studio第八课(SqLite数据库,Room框架,轮播图)
- 前言
- 一、什么是SQLite
-
- 1.SQLite数据库实际操作
- 二、Room框架
-
- 1.需要做的准备
- 2.在主界面进行增删改查
- 三、实现轮播图
-
- 1.导入依赖
- 2.主页面修改布局界面,加入以下布局
- 3.主页面java文件添加图片
前言 作者介绍:友友们好我是乱披风锤,大二学生党一枚
作者主页:乱披风锤的个人博客主页.跳转到个人简介
我和友友们一样喜欢编辑,天天敲代码,沉迷学习,日渐消瘦。很荣幸能向大家分享我的所学,和大家一起进步,成为合格的卷王。如果文章有错误,欢迎在评论区指正。那么开始今天的学习吧!
那么今天的学习就到这里了。友友们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位友友们的支持。以下的代码希望各位大佬们自行检验哦,毕竟亲手操作让记忆更加深刻。
一、什么是SQLite SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。
1.SQLite数据库实际操作 创建OpenSqlHelper类(用于加载驱动)
文章图片
package com.example.hc5;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteTableLockedException;
import androidx.annotation.Nullable;
public class DBOpenHelper extends SQLiteOpenHelper {public DBOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//创建表
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql="create table user(id integer primary key autoincrement,username varchar(20),password varchar(20),age integer)";
sqLiteDatabase.execSQL(sql);
}
//用于更新
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {}
}
多次点击后实现的效果
文章图片
二、Room框架 概念
搭建Room框架设计到的概念有以下几个:
1、Entity : 对应数据库中的表,可以使用Entity注解将一个类变成数据库中的一张表结构。
2、DAO : 全称Database Access Object,定义了对数据库中数据的读写等操作,DAO中可以使用SQL语句来操作数据库。
3、RoomDatabase : 数据库持有类,用于创建数据库或者连接到数据库。内部包含DAO和Entity。
1.需要做的准备 Entity
Room Database中的Entity表示一张数据表结构,一个Entity实例就是表中的一行,如定义一个Word类的Entity。
重点:
1、一个Entity对象代表数据表中的一行,一个Entity类代表一张数据表。
2、Entity中的成员变量都是数据表中的列。
3、一个Java类定义成Entity只要加上Entity注解就可以了。
@Entity
public class User1 {//实体类->数据库->省略创建表
@PrimaryKey(autoGenerate = true)//代表自增长
publicint id;
publicString username;
publicint age;
publicString password;
}
建立一个接口UserDao
接口需要写增删改查方法,并在对应的位置标记了注解。
在添加注解的时候爆红,光标点击在对应的爆红的位置按住alt+enter即可选择导入依赖
在DAO(data access object)中,可以使用SQL语句进行对数据库的操作并且将这些语句与Java中方法关联调用,编译器会检查SQL语句并且通过注解生成对应的查询语句,例如@Update。
注意:
1、DAO必现是抽象类或者接口
2、所有的查询语句必须在单独的线程里面执行。
package com.example.hc5;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
//Dao名字结尾类 一般是操作数据库方法
@Dao
public interfaceUserDao{@Insert//增
void inserUser(User1 user1);
@Delete//删
voiddeleteUser(User1 user1);
@Update//改
voidupdate(User1 user1);
@Query("SELECT * FROM User1")
List getallUser() ;
//查
@Query("SELECT * FROM User1 where id= :userId")
List getallUserByID(int userId);
@Query("SELECT * FROM User1 where username like'%'||:username||'%'")
List getallUserByName(String username) ;
}
抽象类UserDatabase
package com.example.hc5;
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {User1.class}, version = 1, exportSchema = false)
public abstract class UserDatabase extends RoomDatabase {
public abstract UserDao getUserDao();
}
2.在主界面进行增删改查 首先布局按钮控件
MainActivity 下的增删改查操作实现代码
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
User1 user1 = new User1();
user1.username = "test1234";
user1.password = "123456";
user1.age = 20;
userDao.inserUser(user1);
}
});
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
User1 user1 = new User1();
user1.username = "test1234";
user1.password = "123456";
user1.age = 20;
user1.id = 2;
userDao.update(user1);
}
});
findViewById(R.id.button4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List user1List = userDao.getallUserByName("test");
for (User1 user1 : user1List) {
Log.i("User1", "name" + user1.username + "password=" + user1.password + "id=" + user1.id);
}
}
});
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
User1 user1 = new User1();
user1.id = 1;
user1.username = "test1234";
user1.password = "123456";
user1.age = 20;
//对象操作省略sql语句->映射到数据库对于数据的操作
userDao.deleteUser(user1);
三、实现轮播图 1.导入依赖 首先我们要在build.gradle下导入所需要的依赖,我会把代码发在下面,我们直接拿来用就可以了.依赖包如下:
implementation 'io.github.youth5201314:banner:2.2.2'
implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
2.主页面修改布局界面,加入以下布局
3.主页面java文件添加图片
public class MainActivity extends AppCompatActivity {
//声明控件
UserDatabase userDatabase;
UserDao userDao;
Banner banner;
List> bannerList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
banner = findViewById(R.id.banner);
//添加图片
bannerList.add("https://s.cn.bing.net/th?id=OIP-C.rHuc8SKa0wLVwCqqA27uIwHaEt&w=313&h=199&c=8&rs=1&qlt=90&o=6&dpr=1.25&pid=3.1&rm=2");
bannerList.add("https://s.cn.bing.net/th?id=OIP-C.io4VXXysHbv5SM257I-isQHaEo&w=316&h=197&c=8&rs=1&qlt=90&o=6&dpr=1.25&pid=3.1&rm=2");
bannerList.add("https://s.cn.bing.net/th?id=OIP-C.Zxtf2X2EddV-g7hKyBhilAHaQB&w=161&h=350&c=8&rs=1&qlt=90&o=6&dpr=1.25&pid=3.1&rm=2");
banner.setAdapter(new BannerImageAdapter>(bannerList) {
@Override
public void onBindView(BannerImageHolder holder, String data, int position, int size) {
Glide.with(holder.imageView)
.load(data).into(holder.imageView);
}});
banner.setIndicator(new CircleIndicator(this));
banner.setIndicatorRadius(50);
下面是我实现的轮播图效果,图片都是从网上找到,小伙伴们也可以替换自己喜欢的图片实现效果
【android|Android Studio第八课(SqLite数据库,Room框架,轮播图)】
推荐阅读
- 一起看 I/O | Google TV 和 Android TV OS 的最新进展
- 嵌入式D平台|EXPT_1:BleDeviceListActivity与FroBleAdapter
- 好看视频Android重构——围绕于播放器的重构实践
- 如何为Android应用程序创建WordPress REST API
- 如何获得任何WordPress网站的所有插件的名称和活动主题()
- 鸿蒙分包与Android app组件化
- 如何实现 Android 短视频跨页面的流畅续播()
- 揭秘盒马鲜生 Android 短视频秒播优化方案
- AndroidAndroid中Intent的用法总结