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 ...
随机推荐
- [c++ IO加速]快速输入输出
自己封装的FastIO类,效率虽有所损失,不过实用性提高很多. 测试,写10000000个整数(86M): printf 2.7s cout 27s FastIO 1s 测试,读10000000个整数 ...
- 适用于任何Html内容的jQuery Slider插件 - AnySlider
任何Slider都是一个易于使用且支持触摸的jQuery插件,允许您为任何html内容创建可自定义的滑块,如图像,文本,视频等. 特征: 重量轻,易于使用 支持键盘导航 使用淡入淡出或幻灯片过渡以及自 ...
- js 控制窗口跳转
使用iframe 或者使用子窗口时,session 失效时是浏览器地址转换 相关js代码:if(top!=self){ if(top.location != self.location) top.lo ...
- Python 常用编码规范
一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...
- nodejs server启动写法
http://www.phpstudy.net/c.php/18720.html node不利用框架怎么实现对静态HTML.css.js的服务? 初学nodeJS,在使用nodejs构建静态文件服务器 ...
- Django之web框架和url路由
一.web框架 1.什么是web框架 Web框架是用来进行Web应用开发的一个软件架构,开发者在基于Web框架实现自己的业务逻辑.Web应用本质上就是一个socket服务端,而用户的浏览器就是一个so ...
- kali中安装漏洞靶场Vulhub(超详细)
前言 我们都知道,在学习网络安全的过程中,搭建漏洞靶场有着至关重要的作用.复现各种漏洞,能更好的理解漏洞产生的原因,提高自己的学习能力.下面我在kali中演示如何详细安装漏洞靶场Vulhub. 什么是 ...
- SVN强制添加备注
1.进入仓库project1/hooks目录,找到pre-commit.tmpl文件 cp pre-commit.tmpl pre-commit 2.编辑pre-commit文件, 将: $SVNLO ...
- SSM基础pom和xml的整合配置
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...
- 转载 配置vue项目
Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流.16年10月Vue发布了2.x版本,经过了一段时间的摸索和看官方的教程和api,才了解到2.0版本 ...