android数据库SQLite操作

Android SQLite数据库基本操作 程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数据库来实现一些需求的吧,仍然以一个小例子开始: 在创建Android项目之前,我们应该想一下我们要定义的数据库的相关信息和里面的表格的相关信息,为了日后数据库的 阅读详情
定义一个实体类
package com.example.domain;

public class Person {
   private Integer id;
   private String name;
   private String phone;
	public Integer getId() {
		return id;
	}
	public Person() {
		super();
	}
	public Person(Integer id, String name, String phone) {
		super();
		this.id = id;
		this.name = name;
		this.phone = phone;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
   
}


数据库的创建

package com.example.service;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DBopenHelper extends SQLiteOpenHelper {

  	public DBopenHelper(Context context, String name, CursorFactory factory,
			int version) {
		/**
		 * 指定要生成的数据库的名称,第二个参数为游标工厂可以使用android
		 * 自带的直接写null, version 数据库版本号 要求不能为0 要大于0
		 */
		super(context, name, factory, version);
	}

	@Override //数据库每一次创建的时候调用
	public void onCreate(SQLiteDatabase db) {
		//创建表person
	     db.execSQL("create table person(personid integer primary key autoincrement,name varchar(20))");
	}

	@Override//数据库版本号变更的时候被调用
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           db.execSQL("alter table person add phone varchar(12) null");//增加电话号码列 且可为空
           
	}

}

service

package com.example.service;

import java.util.ArrayList;
import java.util.List;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.domain.Person;

public class PersonService {
	   private DBopenHelper dbopenHelper;
	   
	   public PersonService(DBopenHelper dbopenHelper) {
			super();
			this.dbopenHelper = dbopenHelper;
	  }
	   //添加记录
		public void save(Person person){
			    /**
			     * 同一个对象调用getWritableDatabase具有缓存功能,比如在
			     * SQLiteDatabase db2=dbopenHelper.getWritableDatabase();此时
			     * db和db2是同一个对象
			     * 如果SQLiteDatabase db2=dbopenHelper1.getWritableDatabase();
			     * 则db和db2不是同一个对象 因为是不同的对象调用了getWritableDatabase方法
			     */
				SQLiteDatabase db=dbopenHelper.getWritableDatabase();
				db.execSQL("insert into person(name,phone)values(?,?)",
						new Object[]{person.getName(),person.getPhone()}
						);
				db.close();
		}
		//删除记录
		public void delete(Integer id){
			SQLiteDatabase db=dbopenHelper.getWritableDatabase();
			db.execSQL("delete from person where personid=?", new Object[]{id});
				
		}
		//修改记录
		public void update(Person person){
			
		   SQLiteDatabase db=dbopenHelper.getWritableDatabase();
		  
		   db.execSQL("update person set name=?,phone=? where personid=?",
				       new Object[]{person.getName(),person.getPhone(),person.getId()});
			
		}
		/**dbopenHelper.getReadableDatabase()方法首先会调用getWritableDatabase()
		 *方法 如果数据库的磁盘空间已经满了的话 就会调用只读方法,如果不满的话 会
		 *调用 getWritableDatabase方法。如果仅仅是用于读取数据库建议用getReadableDatabase()
		 *方法
		 */
		//查询记录
		public Person find(Integer id){
			SQLiteDatabase db=dbopenHelper.getReadableDatabase();
			//Cursor对象可以对结果集进行随机访问
			Cursor cursor=db.rawQuery("select * from person where personid=?", new String[]{id.toString()});
		    if(cursor.moveToFirst()){
		       int personid=cursor.getInt(cursor.getColumnIndex("personid"));
		       String name=cursor.getString(cursor.getColumnIndex("name"));
		       String phone=cursor.getString(cursor.getColumnIndex("phone"));
		       return new Person(personid,name,phone);
		    }
		    db.close();
			return null ;
		}
		//分页获取记录
		public List<Person> getScrollData(int offsert,int maxResult){
			List<Person> persons=new ArrayList<Person>();
			SQLiteDatabase db=dbopenHelper.getReadableDatabase();
			Cursor cursor=db.rawQuery("select * from person order by personid asc limit ?,?",
					 new String[]{String.valueOf(offsert),String.valueOf(maxResult)});
			while(cursor.moveToNext()){
				 int personid=cursor.getInt(cursor.getColumnIndex("personid"));
			       String name=cursor.getString(cursor.getColumnIndex("name"));
			       String phone=cursor.getString(cursor.getColumnIndex("phone"));
				   persons.add(new Person(personid,name,phone));
			}
			cursor.close();
			return persons;
			
		}
		//获得总数记录
		public long getCount(){
			SQLiteDatabase db=dbopenHelper.getReadableDatabase();
			Cursor cursor=db.rawQuery("select count(*) from person",null );
		    cursor.moveToFirst();
			  long result=cursor.getLong(0);
			  cursor.close();
			  return result;
		}
}

SQLite事务方法
	public void payment(){
			SQLiteDatabase db=dbopenHelper.getWritableDatabase();
			db.beginTransaction();//开启事任务
			try{
				db.execSQL("update person set amount=amount-10 where person=1");
				db.execSQL("update person set amount=amount+10 where person=2");
				db.setTransactionSuccessful();//设置事务的标志位true;
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				//结束事务,有两种情况:commit,rollback,事务的提交或者回滚由事务
				//的标志决定的,如果事务的标志位true 事务就会提交,否则回滚默认情形事务的标志位false
				db.endTransaction();
				db.close();
				
			}
		}



 

安卓db数据库查看工具——快速管理与分析SQLite数据库 SQLite 是 Android 内置的轻量级关系型数据库管理系统,为 Android 应用提供了一种高效、便捷的数据持久化方案。与传统的关系型数据库不同,SQLite 将数据库存储在文件系统中的单一文件内,从而简化了数据库的部署和管理。SQLite 支持标准的 SQL 语言,允许在没有服务器进程的情况下进行数据库操作,这使得它非常适合于资源有限的移动设备环境。在 Android 应用开发中,SQLite 数据库常用于本地数据存储、用户个性化设置记录以及应用内缓存。 阅读详情

相关推荐

ENVI-met新手必看:从零开始创建城市微气候模型(附详细步骤+底图制作技巧)

本文为ENVI-met新手提供从零开始创建城市微气候模型的详细指南,包括环境准备、参数配置、底图制作技巧和三维模型构建步骤。特别针对常见问题提供解决方案,帮助初学者快速掌握城市微气候模拟技术,提升建模效率。

weixin_29269441的博客 407

SQlite的数据库查询

多表查询 + 数据字典查询 数据字典 1 select b.codedesc,a.[branum],d.codedesc,c.codedesc 2 from BI_VEHICLE a 3 join T_PF_DATADICT b on b.fieldname = 'BRAPREFIX' and a.braprefix = b....

aichangai9737的博客 342

ctfshow---sql注入(171-213)

这里提一句,为什么不直接替换成acb这种,因为,flag原本就有字母,还原的时候会全部都还原成数字的,数字替换成符号应该也是可以的,这边测试了下除了&#好像别的符号都可以。插入查询后查询语句就会变成这样,由于id=11111这是一个不存在的id,而后面1=1又为真,所以会查询到表内所有的内容,--+是注释后面的字符。因为接受username的时候没有用引号,所以接受单纯的数字,而数字和字符比较会转换类型,字符串会变成数字0进行比较,所以相等。

fainpo的博客 1320

Android开发系列(九):创建数据库以及完成简单的CRUD操作

Android应用在数据库的操作

u010800530的专栏 2267

DDR4 硬件设计笔记

DDR4-DRAM是第四代支持双倍数据读取,支持随机位置存取的静态存储器。DDR4-DRAM的工作原理。DDR之T拓扑和Fly-by拓扑。DDR的硬件设计。DDR4 PCB设计要点介绍。DDR4之PCB走线间距的串扰评估。DDR4之内存通道(channel)和内存列(rank)。

qq_26815321的博客 1万+

给新人的储能系统入门图解:从电芯到EMS,一张图看懂BESS里那些‘黑话’

本文通过视觉化拆解储能系统,从电芯到EMS详细解析BESS中的关键组件和行业术语。涵盖电芯参数、模组组装、PCS功能、BMS与EMS分工,以及SOC、DOD等关键运维参数,帮助新人快速理解储能系统的核心技术和应用场景。

weixin_42522964的博客 594

安卓 mysql数据库操作系统_安卓SQLite数据库操作(上)

安卓系统自带数据库,名为SQLite。这篇文章我们用一个Demo来讲解安卓操作数据库的例子。By the way,安卓创建的数据库文件存放在/data/data//database 下,后缀名一般为xxx.db看到数据库文件,我们一般使用一款名为SQLite Expert 的可视化工具来查看。下面我们通过一个简单的例子来,创建一个数据,数据库里面创建一个表格。注意,虽然我们在安卓开发中有包装好的...

weixin_42513546的博客 422

【AutoDL】使用云服务器跑深度学习代码

1.算力市场 租用服务器,选择自己心仪的服务器2.镜像可以选择一些基础的镜像,社区镜像里是git上有的环境。3.上传文件在文件存储中,选择上传的区,在右边点击上传,选择自己的文件上传到云服务器中。

weixin_45768644的博客 3703

android mysql sqlite_安卓 SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。在Android 运行时环境包含了完整的 SQLite。首先介绍一下SQLite这个数据库:SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持W...

weixin_34450486的博客 307

无人飞行器和车辆的协同配送物资问题——附带MATLAB代码

通过建立城市地图、生成物资点和配送任务、路径规划、协同调度以及仿真和评估等步骤,可以有效地解决物资配送的优化问题。通过建立城市地图、生成物资点和配送任务、路径规划、协同调度以及仿真和评估等步骤,可以有效地解决物资配送的优化问题。我们的目标是最小化物资配送的总时间,同时确保每个物资点都被正确配送的无人飞行器或车辆所访问。我们的目标是最小化物资配送的总时间,同时确保每个物资点都被正确配送的无人飞行器或车辆所访问。我们首先需要建立一个城市地图,包括物资点、无人飞行器的起始点和车辆的起始点。

CyberJolt的博客 950

STM32实战开发(71):STM32人脸识别开发教程:基于摄像头模块的人脸识别系统

在嵌入式系统中,STM32凭借其强大的计算性能、丰富的外设接口以及低功耗特性,成为了实现人脸识别系统的理想平台。STM32虽然没有强大的计算能力,但可以通过合理利用外部硬件加速模块,如DSP、GPU、FPGA等,结合轻量级的人脸识别算法,实现高效的人脸识别系统。尽管STM32的计算资源相对有限,但通过合理的优化和使用高效的算法,我们依然能够实现高效的人脸识别功能。在本项目中,我们使用。在STM32开发中,虽然处理能力有限,但通过优化算法和合理利用硬件加速,我们仍然可以实现一个轻量级的、实时的人脸识别系统。

2201_76125393的博客 1662

Android操作sqlite数据库

sqlite

ywanju的博客 1747

2024年12月数据月报

2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例

SmartSi 2654

android 内嵌 数据库,安卓开发之嵌入式数据库sqlite的操作方法

安卓App开发经常会需要嵌入式数据库sqlite的辅助,它可以存放我们必要的应用数据,下面介绍下如何使用java连接读取sqlite中的数据。本文中的代码经本人测试可用,可以参考。代码如下:DBHelper.javapackage com.web.redrain;import android.content.Context;import android.database.sqlite.SQLite...

weixin_28733803的博客 640

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【日常】 安卓SQLite数据库的简单操作总结(增删改查)

在安卓中,系统提供了SQLite数据库供我们使用,增删改查四个基本功能是基本的,今天我就我学习中遇到的数据库的增加数据功能来做一个简单回复 创建一个数据库的类 SQLiteOpenHelper是一个系统提供的抽象类,我们通过写一个类继承这个抽象类, 以此获取一个数据库对象之后进行数据库操作 public class DBOpenHelper extends SQLiteOpenHelper { ...

BeanSten的博客 7151

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 代码操作.db demo,SQL语句操作SQLite数据库Demo

布局文件如下:xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.sqlite.MainActivity"android:orientation="vertical...

weixin_34028581的博客 198

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

a安卓连接mysql_【转】#afinal#来操作android的数据库sqlite

今天给大家介绍下#afinal#来操作android的数据库sqlite。#afinal#是一个android的orm、ioc快速开发框架,里面包含了四大功能:空间的id绑定和事件绑定功能;网络图片的显示功能(里面包含了强大的缓存框架);数据库sqlite的操作功能;http数据的读取功能(支持ajax方式读取);#afinal#开源网址:https://github.com/yangfuhai/...

weixin_34274601的博客 148

安卓 SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。 在Android 运行时环境包含了完整的 SQLite。 首先介绍一下SQLite这个数据库:   SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就...

yzxqml的专栏 1602

安卓在一个db文件夹下创建两张表_python3下操作sqlite3数据库操作的代码、图示分析,值得学习...

1.python3的sqlite3的代码import sqlite3 #导入数据库驱动#连接到数据库#数据库文件是“test.db”#如果数据库不存在的话,将会自动创建一个 数据库cn = sqlite3.connect("xgjtest.db") #cn=conn=connect#在当前目录下生成一个xgjtest.db的数据库,也可以指定目录的文件夹下#如("/home/xgj/xgjpyth...

weixin_42462007的博客 440

安卓sqllite连接mysql_Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库...

下面是最原始的方法,用SQL语句操作数据库。后面的“Android中SQLite数据库操作(2)——SQLiteOpenHelper类”将介绍一种常用的android封装操作SQLite的工具类。 MainActivity.javapackage com.example.sqlitetest;import android.app.Activity;import android.database.C...

weixin_28976179的博客 300

java 安卓 sqlite数据库,Android应用中内嵌SQLite数据库的基本操作指南

一、首先写一个类继承SQLiteOpenHelper类重写他的方法指定db的名称、版本,重写oncreat和onUpgrade方法,写SQL语句创建表public class MySQLiteOpenhelper extends SQLiteOpenHelper {private static String name = "person.db";private static int version...

weixin_39969060的博客 594

安卓获取mysql数据封装方法_[Android] Sqlite 数据库操作 工具封装类

sqlite 数据库封装类DatabaseUtil.java(封装的类)packagecom.jack.androidbase.tools;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.SQLExceptio...

weixin_39802962的博客 108

Android开发笔记(三十)SQLite数据库基础操作

SQLite语法 SQLite是一个小巧的嵌入式数据库,使用方便、开发简单,手机上最早由ios运用,后来android兴起同样也采用了sqlite。sqlite的多数sql语法与oracle是一样的,下面只列出不同的地方: 1、建表时为避免重复操作,应加上“IF NOT EXISTS”关键词,例如:CREATE TABLE IF NOT EXISTS table_name 2、同样的,删表时

aqi00的博客 3671

android中使用sqlite的数据库的基本操作

首先我们来了解一下SQLite的基本: sqlite数据库的使用方式: 1.sqlite数据库数据类型: Intger/ varchar(10)/ float /double /char(10) /text 2.SQL语句的回顾: 2.1 创建表的语句: create table 表名(字段名称 数据类型 约束,字段名称 数据类型 约束......) create table pers

梦的彼岸花 893

安卓开发工程师-SQLite 数据库操作

在 SQLite 中,表结构通过 SQL 的语句定义。例如,假设我们有一个用户表User_id:主键,自增name:用户姓名age:用户年龄。

qq_62784677的博客 1186

[Android] Android 使用 Greendao 操作 db sqlite

Android 使用 Greendao 操作 db sqlite GreenDAO是一个开源的安卓ORM框架,能够使SQLite数据库的开发再次变得有趣。它减轻开发人员处理低级数据库需求,同时节省开发时间。 SQLite是一个令人敬畏的内嵌的关系数据库,编写SQL和解析查询结果是相当乏味和耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),GreenDAO可...

weixin_30300225的博客 141
上一篇: android利用SharedPreferences来保存用户参数及读取
下一篇: Android 拍照并显示在ImageView中(进阶)
yanliling0909
博客等级 码龄14年 9粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值