先写一个类,继承自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数据库的更多相关文章

  1. Android之SqlLite数据库使用

    每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库—SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据 ...

  2. Android学习---如何创建数据库,SQLite(onCreate,onUpgrade方法)和SQLiteStudio的使用

    一.android中使用什么数据库? SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程式庫中.它是D.RichardHipp建立的公有领域项目.SQLite 是一个软件库,实现 ...

  3. Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...

  4. Android版本升级同时Sqlite数据库的升级及之前数据的保留

    http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...

  5. 【转】Android 使用ORMLite 操作数据库

    Android 使用ORMLite 操作数据库   用过ssh,s2sh的肯定不会陌生 ,应该一学就会 第一步: 下载ormlite-android-4.41.jar和ormlite-core-4.4 ...

  6. QT 读写sqllite数据库

    QT 读写sqllite数据库 分类: 技术资料2014-04-10 10:39 84人阅读 评论(0) 收藏 举报 #include <QtGui/QApplication> #incl ...

  7. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  8. 在Cocos2d-x正在使用SQLlite数据库

    SQLite,它是一个轻量级的数据库,合规ACID的关系型数据库管理系统,它的设计目标是嵌入式的,并且眼下已经在非常多嵌入式产品中使用了它,它占用资源非常的低.在嵌入式设备中,可能仅仅须要几百K的内存 ...

  9. Android存储之SQLite数据库

    Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...

随机推荐

  1. DNS注入以获取WebShell -asp_POST_DNS_SQLServer_GetWebShell

    豹子安全-注入工具-asp_POST_DNS_SQLServer_GetWebShell 注意,是 DNS 注入.这种方式的注入会隐藏很多细节, 对于用户来说是透明的. 请看如下视频(该视频会停留15 ...

  2. 站在CSS3的肩上定义选择器

    按上下文选择元素 按祖先元素选择要格式化的元素 输入ancestor,这里的ancestor是希望格式化的元素的祖先元素的选择器. 输入一个空格(必不可少). 如果需要,对后续的每个祖先元素重复第(1 ...

  3. C:习题1

    C 语言具有哪些主要特点? 1.兼高级语言和汇编语言优点的语言 2.一种结构化程序设计语言 3.语言数据类型丰富 4.具有种类丰富的运算符 5.有预处理功能 C 语言的主要用途是什么? 1.作为一种系 ...

  4. 【Net】CEF浏览IISExpress运行Web项目

    前言 本文介绍在Winform桌面应用中,使用IISExpress做Host主机,启动.Net平台的Web项目. 浏览Web网页使用CEF开源组件. 准备 首先创建Winform项目WinFormII ...

  5. Typora + Powershell/bash + Git搭建自己的笔记

    网上都说什么onenote,evernote,ant等笔记.个人感觉这些都不算太好,还是自己用简易东西搭建一个笔记. 个人推荐使用typora写笔记. 上面既有文件目录,还能通过模糊搜索. 然后需要p ...

  6. json 格式要求

    json 格式中, 字符串类型需要使用双引号,不能为单引号

  7. 【Python Deap库】遗传算法/遗传编程 进化算法基于python DEAP库深度解析讲解

    目录 前言 概述 启发式的理解(重点) 优化问题的定义 个体编码 初始族群的创建 评价 配种选择 锦标赛 轮盘赌选择 随机普遍抽样选择 变异 单点交叉 两点交叉 均匀交叉 部分匹配交叉 突变 高斯突变 ...

  8. python操作rabbitmq,实现生产消费者模型

    更多详情参考官方文档:https://www.rabbitmq.com/tutorials/tutorial-six-python.html 参考博客:https://blog.csdn.net/we ...

  9. Word与Excel中,如何输入✔标志

    为了表达值的对错,或者相关任务是否完成,我们需要在word及excel中输入[√]和[x] Word与Excel中如何在方框“口”中打勾[√]和[x],在Word中打钩的方法有3种:第一种,在插入特殊 ...

  10. Spring 中的事件处理

    Spring 中的事件处理 Spring 的核心是 ApplicationContext,它负责管理 beans 的完整生命周期.当加载 beans 时,ApplicationContext 发布某些 ...