Android如何使用SQLlite数据库
先写一个类,继承自SQLiteOpenHelper
public class MyDatabaseHelper extends SQLiteOpenHelper {
//声明一个Context
private Context context;
//原本的重写方法很多用不到的参数 这里直接删除了,第二个参数为数据库的名字(需要用db结尾)
// 调用父类的时候传入1个空值就可以了
//这里的两个参数分别是传入的Content(调用的Activity) version(版本)
public MyDatabaseHelper(@Nullable Context context, int version) {
super(context, "data.db", null, version);
//赋值
this.context=context;
}
//创建数据库的方法
@Override
public void onCreate(SQLiteDatabase db) {
String s = "create table Book(" +
"id integer," +
"name text)";
//执行SQL语句
db.execSQL(s);
Toast.makeText(context, "数据库创建成功", Toast.LENGTH_SHORT).show();
}
//升级数据库的 这里多了两个参数
//这两个参数是版本号,只有新版本号大于旧版本号的时候才能运行这个方法
//升级的时候记得换一个表明,表明不能相同
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String s = "create table User(" +
"id integer," +
"name text)";
//执行SQL语句
db.execSQL(s);
Toast.makeText(context, "数据库升级成功", Toast.LENGTH_SHORT).show();
}
}
主方法的代码
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class DataBase extends AppCompatActivity {
//声明按钮
Button btn1, btn2, btn3, btn4, btn5, btn6;
private MyDatabaseHelper dbHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data_base);
//找到控件
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
btn6 = findViewById(R.id.btn6);
//创建数据库
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbHelper = new MyDatabaseHelper(DataBase.this, 5);
dbHelper.getWritableDatabase();
}
});
//升级数据库
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//修改一下版本
dbHelper = new MyDatabaseHelper(DataBase.this, 6);
dbHelper.getWritableDatabase();
}
});
//添加数据
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db = dbHelper.getWritableDatabase();
//添加数据需要用到类似于Map的ContentValues
ContentValues values = new ContentValues();
//添加 前面的数据是列名,要与数据库表中的数据保持一致
values.put("id", 1);
values.put("name", "张三");
//插入数据,第一个参数为表名,中间的参数输入一个空值就行,最后一个参数就是刚才存的values
//输入数据会返回一个影响行数
long rows = db.insert("User", null, values);
if (rows > 0) {
Toast.makeText(DataBase.this, "插入成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(DataBase.this, "插入失败", Toast.LENGTH_SHORT).show();
}
}
});
//更新数据
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db = dbHelper.getWritableDatabase();
//更新数据需要用到类似于Map的ContentValues
ContentValues values = new ContentValues();
//添加 前面的数据是列名,要与数据库表中的数据保持一致
values.put("name", "张三1");
int rows = db.update("User", values, "id=?", new String[]{"1"});
if (rows > 0) {
Toast.makeText(DataBase.this, "数据更新成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(DataBase.this, "数据更新失败", Toast.LENGTH_SHORT).show();
}
}
});
//删除数据
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db = dbHelper.getWritableDatabase();
int rows = db.delete("User", "id=?", new String[]{"1"});
if (rows > 0) {
Toast.makeText(DataBase.this, "数据删除成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(DataBase.this, "数据删除失败", Toast.LENGTH_SHORT).show();
}
}
});
//查询数据
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这次是read,以前都是write
db = dbHelper.getReadableDatabase();
//查询表中所有数据,query()方法返回一个Cursor对象
// 第一个参数为表名,第二个参数为列名,如果不写的话则返回全部列,第三个参数为筛选条件,如果第三个筛选条件有?则第四个就是和更新删除的意义一样,凭借这个进行筛选
// 第五个参数是靠什么分组,第六个是分完组靠什么筛选,最后一个是依靠什么排序
Cursor cursor = db.query("User", null, null, null, null, null, null);
//如果索引在第一条就开始执行
if (cursor.moveToFirst()) {
do {
//通过列名找到数据
String id = cursor.getString(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.i("data", "id为" + id + "名字为" + name);
} while (cursor.moveToNext());
}
//使用完需要关闭
cursor.close();
}
});
}
}
最后是XML布局的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".DataBase">
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="创建数据库" />
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="升级数据库" />
<Button
android:id="@+id/btn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="添加数据" />
<Button
android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="更新数据" />
<Button
android:id="@+id/btn5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="删除数据" />
<Button
android:id="@+id/btn6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="查询数据" />
</LinearLayout>
最后附上效果图
创建数据库
升级数据库
插入数据
更新数据
删除数据
查询数据
这里画圈的地方是为了做个筛选,更直观的看出查询出的log数据
最后附上一个查看数据库的位置
在右下角的按钮 打开后 在data/data/包名/database/…
包名不知道的话,可以打开你这个项目内任意一个类,最上面就是包名
Android如何使用SQLlite数据库的更多相关文章
- Android之SqlLite数据库使用
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库—SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据 ...
- Android学习---如何创建数据库,SQLite(onCreate,onUpgrade方法)和SQLiteStudio的使用
一.android中使用什么数据库? SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程式庫中.它是D.RichardHipp建立的公有领域项目.SQLite 是一个软件库,实现 ...
- Android 系统API实现数据库的增删改查和SQLite3工具的使用
在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...
- Android版本升级同时Sqlite数据库的升级及之前数据的保留
http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...
- 【转】Android 使用ORMLite 操作数据库
Android 使用ORMLite 操作数据库 用过ssh,s2sh的肯定不会陌生 ,应该一学就会 第一步: 下载ormlite-android-4.41.jar和ormlite-core-4.4 ...
- QT 读写sqllite数据库
QT 读写sqllite数据库 分类: 技术资料2014-04-10 10:39 84人阅读 评论(0) 收藏 举报 #include <QtGui/QApplication> #incl ...
- Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作
一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...
- 在Cocos2d-x正在使用SQLlite数据库
SQLite,它是一个轻量级的数据库,合规ACID的关系型数据库管理系统,它的设计目标是嵌入式的,并且眼下已经在非常多嵌入式产品中使用了它,它占用资源非常的低.在嵌入式设备中,可能仅仅须要几百K的内存 ...
- Android存储之SQLite数据库
Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...
随机推荐
- Java面试札记
Java面试札记 在最深的夜里,即使是你的影子也会离你而去. 背景:愿某人在中秋节之前吃上大厂月饼!!!@CDZ 1.Java的八种基本数据类型? 整型:byte.int.short.long: 浮 ...
- python 基础应用5-简单购物车
1.列表去重 #列表去重 li = [1,2,33,33,2,1,4,5,6,6] set1 = set(li)# 转为集合 li = list(set1)# 转为列表 print(li)#[1, 2 ...
- Flash 被禁止运行的方法
下面以谷歌浏览器 和 火狐浏览器 来说明. █ 自2020 年以来, 谷歌浏览器(Chome)已全面禁止Flash的运行,我们可以通过如下方法开启: █ 火狐(FireFox) 也禁止,但需要点“运行 ...
- react-grid-layout实现拖拽,网格布局
借鉴地址:https://www.jianshu.com/p/b48858eee3a7 安装 react-grid-layout npm install react-grid-layout impor ...
- Arthas 使用(二) —— 应用场景
1. ognl获取bean SpringContextUtil,通常代码中会有类似这样的工具类用来获取 bean 实例 @Component public class SpringContextUti ...
- 「雕爷学编程」Arduino动手做(37)——MQ-3酒精传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- 计蒜客 - Fantastic Graph
题目链接:https://nanti.jisuanke.com/t/31447 知识点: 最大流 题目大意: 给定一个二分图,左边有 $N$ 个点,右边有 $M$ 个点,给出 $K$ 条边.问是否能从 ...
- 进程间的通信——pipe通信
当进程创建管道文件后,其建立的子进程自动继承该文件. 管道通信分为命名管道和未命名管道,他们的区别是命名管道在当创建他的进程结束后,系统仍存有该文件 管道的命令格式为 pipe(fds) 其中 fds ...
- C#日志记录类
public class WriteLog { /// <summary> /// 将错误写入文件中 /// </summary> /// <param name=&qu ...
- C# 数据操作系列 - 16 SqlSugar 完结篇
0. 前言 前一篇我们详细的介绍了SqlSugar的增删改查,那些已经满足我们在日常工程开发中的使用了.但是还有一点点在开发中并不常用,但是却非常有用的方法.接下来让我们一起来看看还有哪些有意思的内容 ...