Android SQLiteOpenHelper使用示例

Android开发之SQLiteOpenHelper 1、创建一个继承于SQLiteOpenHelper的子类 public class SqliteHelper extends SQLiteOpenHelper { private static SqliteHelper instance; public static synchronized SqliteHelper getInstance(Context context) { if (instance == null) { instance = 阅读详情
Android SQLiteOpenHelper使用示例
 
作者:byandby  来源:www.sqlite.com.cn  时间:2011-8-16  【 字体:大 中 小 】 〖 双击滚屏 〗
 
 
 

我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。

onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。

SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的 getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。

调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。

下面通过一个简单的小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等,我们将查询后获取到的数据显示到TextView上,看一下运行后的效果。

package xiaohang.zhimeng;
 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
 
public class MySQLiteHelper extends SQLiteOpenHelper{
 //调用父类构造器
 public MySQLiteHelper(Context context, String name, CursorFactory factory,
   int version) {
  super(context, name, factory, version);
 }
 
 /**
  * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
  * 重写onCreate方法,调用execSQL方法创建表
  * */
 @Override
 public void onCreate(SQLiteDatabase db) {
  db.execSQL("create table if not exists hero_info("
      + "id integer primary key,"
      + "name varchar,"
      + "level integer)");
 
 }
 
 //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
 }
 
}




package xiaohang.zhimeng;
 
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
 
public class Activity01 extends Activity {
 MySQLiteHelper myHelper;
 TextView tv;
 
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView)findViewById(R.id.tv);
        //创建MySQLiteOpenHelper辅助类对象
        myHelper = new MySQLiteHelper(this, "my.db", null, 1);
        //向数据库中插入和更新数据
        insertAndUpdateData(myHelper);
        //查询数据
        String result = queryData(myHelper);
        tv.setTextColor(Color.RED);
        tv.setTextSize(20.0f);
        tv.setText("名字\t等级\n"+result);
 
    }
 
 //向数据库中插入和更新数据
 public void insertAndUpdateData(MySQLiteHelper myHelper){
  //获取数据库对象
  SQLiteDatabase db = myHelper.getWritableDatabase();
  //使用execSQL方法向表中插入数据
  db.execSQL("insert into hero_info(name,level) values('bb',0)");
  //使用insert方法向表中插入数据
  ContentValues values = new ContentValues();
  values.put("name", "xh");
  values.put("level", 5);
  //调用方法插入数据
  db.insert("hero_info", "id", values);
  //使用update方法更新表中的数据
  //清空ContentValues对象
  values.clear();
  values.put("name", "xh");
  values.put("level", 10);
  //更新xh的level 为10
  db.update("hero_info", values, "level = 5", null);
  //关闭SQLiteDatabase对象
  db.close();
 }
 
 //从数据库中查询数据
 public String queryData(MySQLiteHelper myHelper){
  String result = "";
  //获得数据库对象
  SQLiteDatabase db = myHelper.getReadableDatabase();
  //查询表中的数据
  Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
  //获取name列的索引
  int nameIndex = cursor.getColumnIndex("name");
  //获取level列的索引
  int levelIndex = cursor.getColumnIndex("level");
  for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
   result = result + cursor.getString(nameIndex)+ "\t\t";
   result = result + cursor.getInt(levelIndex)+"       \n";
  }
  cursor.close();//关闭结果集
  db.close();//关闭数据库对象
  return result;
 }
 
 @Override
 protected void onDestroy() {
  SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象
  //删除hero_info表中所有的数据 传入1 表示删除所有行------>点击back按钮
  db.delete("hero_info", "1", null);
  super.onDestroy();
 }
}

SQLiteOpenHelperDemo SQLiteOpenHelper 立即下载

相关推荐

求一个点到任意两个点所在直线距离 C#代码公式

求点C(X0,Y0) 到点A(x1,y1)和点B(x2,y2)所在直线的距离 1.已知任意两个点,求这两个点所在直线 已知点A(x1,y1),点B(x2,y2) 设直线上另外任意一个点为(x,y) 那么 (x-x1)/(y-y1) = (x2-x1)/(y2-y1); 整理后得方程: (y2-y1)x + (x1-x2)y + (y1-...

qq_29434987的博客 4492

Android学习 | 08.SQLiteOpenHelper

SQLiteOpenHelper是android系统提供的用于创建及操作数据库的工具类。该类中提供了创建、升级、降级时的回调方法,对应onCreate(),onUpgrade(),onDowngrade()。在使用时可以根据app功能进行覆写相应的方法,从而实现正确的存储数据...

M_Nobody的博客 5823

半导体EAP系统入门指南:从零开始理解设备自动化程序(附实战案例)

本文深入浅出地介绍了半导体制造中EAP(设备自动化程序)系统的核心作用与工作原理。EAP作为连接MES与生产设备的桥梁,负责指令翻译、数据采集与实时控制,是实现晶圆厂全自动化的关键。文章通过对比手动与自动模式,阐述了EAP在提升效率、保障良率方面的价值,并提供了一个实战案例,帮助读者从零构建对半导体CIM体系中这一关键组件的理解。

weixin_29200741的博客 736

Android SQLite数据库 SQLiteOpenHelper的操作使用

Android SQLite数据库 SQLiteOpenHelper的操作使用

weixin_42602900的博客 1104

STM32 HAL 硬件IIC驱动BNO085:从移植到姿态解算全流程解析(附源码)

本文详细解析了STM32 HAL库下硬件IIC驱动BNO085 IMU传感器的全流程,包括CubeMX配置、驱动移植、传感器初始化、Q格式数据处理及四元数转欧拉角解算。提供了完整的源码实现和常见问题解决方案,帮助开发者快速掌握高精度姿态测量技术。

palm99的专栏 1047

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互

摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3032

Android的SQLiteOpenHelper类 笔记241027

SQLiteOpenHelper是Android开发中用于管理SQLite数据库的一个非常重要的工具类。

kfepiza的博客 1976

「PAT乙级真题解析」Basic Level 1034 有理数四则运算 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。 如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式. **所以本题的一个重点是如何将有理数转为题设要求的有理数.**

过美好生活,做高效程序员 3130

Android开发 SQLite数据库 SQLiteOpenHelper

在Android开发中,一般会使用SQLiteOpenHelper类来获得SQLiteDatabase实例,然后对数据库进行增删查改操作。SQLiteDatabase用于在Andriod开发中操作SQLite数据库。SQLite是一个小型的嵌入式数据库,使用SQL管理数据。创建和删除SQLite数据库。

jmqxnxg的博客 785

20.Labview使用子vi进行VI间的数据传递详解(模块化)

子VI(模块化)题主在题注中也提到, 子VI的建立只是为了减少程序的负担,那么我们当使用子VI的时候首先就要明确什么是子VI?什么样的程序可以作为子VI?首先我们来看NI官方给的定义,具体说明如下图所示:题主已经将重点画出来了,在官方的解释中将子VI定义为了模块化,大家可以看到创建模块化子VI的特点在于减少代码重复工作优化了程序的框架结构。把一个代码打包,需要的时候就拎出来让他处理处理,不需要的时候就让它躺在我的列表里就行了也不占用运行空间。那么创建子VI需要需要注意以下几点:①任何一个程序。

关注我,更多技术问题欢迎私聊~ 3516

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2539

android 学习笔记——SQLiteOpenHelper类的简单使用

本文记录SQLiteOpenHelper类的简单使用,函数说明都加在注释里,如有错误的地方请及时指正。ContentValues类似于map,相对于map,它提供了存取数据对应的put(String key,xxx Value)和getAsXxx(String key)方法,key为字段名称,value为字段值,Xxx指的是各种常用的数据类型,如:String、integet等。

小王的博客 1604

x2-DFD:A framework for explainable and explainable deepfake detection

该文章提出了X2-DFD框架,用于可解释和可扩展的深度伪造检测。通过评估大型多模态语言模型(MLLMs)在深度伪造检测中的内在能力,发现它们在不同伪造相关特征上的有效性各异。基于此,实施了针对性的微调策略,显著提高了MLLMs的解释能力,并整合了外部深度伪造检测器(EDDs),以结合MLLMs和传统检测器的互补优势,实现更好的检测和解释。

志在山顶的人,不会贪念山腰的风景 510

初涉android SQLiteOpenHelper

SQLiteOpenHelper 是android提供的管理数据库的辅助类 res/values/strings <resources>中添加 <resources> <string name="app_name">app18</string> <string name="sql_table_student"&gt...

不止于代码 261

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android SQLiteOpenHelper 的作用及使用

SQLiteOpenHelper是一个帮助类数据库管理的帮助类,让开发者直接操作这个类实现对数据库各种框架的完善

九年义务教育的残次品” 6977

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android SQLiteOpenHelper使用示例

android SQLiteOpenHelper使用示例   2011-06-22 16:39:53|  分类: android|字号 订阅 我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和

足球中国的专栏 812

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android SQLiteOpenHelper

引用的文章: 1.SQLiteOpenHelper   SQliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理。要使用它必须实现它的nCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int)方法   onCreate:当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。   onUpgrade:当

qaztct12345的博客 563

Android中SQLiteOpenHelper使用示例

我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。 onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创

羊之草叶的专栏 923

Android如何使用SQLiteOpenHelper

Android如何使用SQLiteOpenHelper 博客分类: android   1.SQLiteOpenHelper   SQliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理。要使用它必须实现它的nCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int)方法   onCreate:当数据库

wangjia55的专栏 1587

Android之SQLiteOpenHelper

文章目录一、概念二、构造方法三、需要重写的两个方法1、onCreate()2、onUpgrade() 一、概念 Android平台里一个数据库辅助类,用来创建或打开数据库,并且管理数据库的创建和版本更新 二、构造方法 SQLiteOpenHelper类的构造方法格式为 public SQLiteOpenHelper(Context context, ...

qq_39438055的博客 1582

安卓开发-Sqliteopenhelper使用

如果在安卓开发中,直接使用Activity中的openOrCreateDatabase(name, mode, factory)会有一系列跟随的问题。比如说数据库升级、更新等。 最好是使用其封装版本:SQLiteOpenHelper

imzoer的专栏 1986

说说Android里的SQLiteOpenHelper

Android SQLite

hehejxw的博客 265

ANDROID SQLITEOPENHELPER详解

一、 SQLite介绍  SQLite是android内置的一个很小的关系型数据库。  SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。  博客中有一篇有稍微详细一点的介绍,大家可以去看一下。  二、 SQLiteOpenHelper的使用方法  SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。  可以通过继承这

执迷的博客 558

Android SQLiteOpenHelper使用和源码详解

SQLiteOpenHelper在讲解闹钟数据库之前,需要先来分析一下SQLiteOpenHelper的源码,从而了解SQLite数据库的使用.使用方法大家在使用SQLiteOpenHelper的时候,一般习惯使用如下代码构建一个自定义的SQLiteOpenHelper:public class TestDBHelper extends SQLiteOpenHelper { public s

小一的专栏 9774
上一篇: 新的篇章:赚了一元钱
下一篇: 祝福短信程序有感
danielinbiti
博客等级 码龄24年 610粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值