博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一起学Android之Sqlite
阅读量:5896 次
发布时间:2019-06-19

本文共 4220 字,大约阅读时间需要 14 分钟。

概述

Android对Sqlite提供了完全友好的支持,在应用程序内部,都可以通过名称访问任何的数据库。建议通过SQLiteOpenHelpe的子类并通过重写onCreate() 方法进行创建数据表。本文主要讲解Andriod开发中Sqlite的简单应用(增删改查),仅供学习分享使用。

涉及知识点

  1. SQLiteOpenHelper 管理创建数据库和版本管理的帮助类(抽象类)。
  2. onCreate 创建数据表的方法
  3. execSQL 执行一个非Select的语句,没有返回信息。
  4. SQLiteDatabase 管理Sqlite数据的对象,显示提供一组方法来管理数据库(CRUD)。
  5. SimpleCursorAdapter 一个简易的适配器,用来将Cursor适配数据到控件上。
  6. ContentValues 存储一组数据值(key-value)。

示例效果图

如下图所示:

数据库帮助类

代码如下:

1 package com.hex.demosqlite; 2  3 import android.content.Context; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteOpenHelper; 6  7 /** 8  * Created by Administrator on 2019/4/4. 9  */10 public class DatabaseHelper extends SQLiteOpenHelper {11 12     private static final String DB_NAME="persons.db";13 14     private static final int DB_VERSION=1;15 16     public DatabaseHelper(Context context) {17         super(context, DB_NAME, null, DB_VERSION);18     }19 20     /**21      * 创建数据库,指定数据库名称,版本号22      * @param db23      */24     @Override25     public void onCreate(SQLiteDatabase db) {26         String sql="create table person(_id integer primary key autoincrement not null, name char(10),nickname char(10))";27         db.execSQL(sql);28     }29 30     /**31      * 数据库升级32      * @param db33      * @param oldVersion34      * @param newVersion35      */36     @Override37     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {38         if(newVersion>oldVersion){39             onCreate(db);40         }41     }42 }

新增(Insert)

代码如下:

1  /** 2      * 新增 3      * 4      * @param v 5      */ 6     public void add(View v) { 7         /** //一般不使用此种方法,因为execSQL方法没有返回值 8          String sql="insert into person(name,nickname)values('宋江','及时雨')"; 9          db.execSQL(sql);10          */11         ContentValues values = new ContentValues();12         values.put("name", "宋江");13         values.put("nickname", "及时雨");14         //返回值为插入行的行号15         long result = db.insert("person", null, values);16         if (result > 0) {17             Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();18         } else {19             Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show();20         }21     }

查询(Query)

代码如下:

1   /** 2      * 查询 3      * 4      * @param v 5      */ 6     public void query(View v) { 7         /* 8         String sql="select * from person where name=?"; 9         Cursor cursor = db.rawQuery(sql,new String[]{"宋江"});10         */11         //columns 如果为空,则表示所有列12         Cursor cursor = db.query("person", null, "name=?", new String[]{"宋江"}, null, null, null);13         while (cursor.moveToNext()) {14             int nameIndex = cursor.getColumnIndex("name");15             int nickIndex = cursor.getColumnIndex("nickname");16             String nameValue = cursor.getString(nameIndex);17             String nickValue = cursor.getString(nickIndex);18             String s = "name=" + nameValue + ",nickname=" + nickValue;19             Toast.makeText(this, s, Toast.LENGTH_SHORT).show();20         }21         adaper.swapCursor(cursor);22         adaper.notifyDataSetChanged();23     }

修改(Update)

代码如下:

1     /** 2      * 更新 3      * 4      * @param v 5      */ 6     public void update(View v) { 7         // String sql="update person set nickname=? where name=?"; 8  9         ContentValues values = new ContentValues();10         values.put("nickname", "及时雨2");11         //更新语句受影响的行数12         int result = db.update("person", values, "name=?", new String[]{"宋江"});13         if (result > 0) {14             Toast.makeText(this, "更新成功", Toast.LENGTH_SHORT).show();15         } else {16             Toast.makeText(this, "更新失败", Toast.LENGTH_SHORT).show();17         }18     }

删除(Delete)

代码如下:

1   /** 2      * 删除 3      * 4      * @param v 5      */ 6     public void delete(View v) { 7         //String sql="delete person where name=?"; 8  9         //受删除语句影响的行数10         int result = db.delete("person", "name=?", new String[]{"宋江"});11         if (result > 0) {12             Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();13         } else {14             Toast.makeText(this, "没有删除成功", Toast.LENGTH_SHORT).show();15         }16     }

备注

千里之行,始于足下!

 

转载于:https://www.cnblogs.com/hsiang/p/10660480.html

你可能感兴趣的文章
C++基础教程
查看>>
在大公司呆5年,你就废了
查看>>
mac mamp mysql no start servel
查看>>
单例,线程安全
查看>>
Docker简易版:使用更少击键运行Redis,MongoDB
查看>>
javascript身份证简单校验
查看>>
laravel框架快速入门(一)
查看>>
swing 鼠标监听addMouseMotionListener
查看>>
windows下设置网络pingIP地址
查看>>
js如何实现10秒倒计
查看>>
ubuntu下解决鼠标滚轮不能使用的问题
查看>>
隐马尔可夫(HMM)、前/后向算法、Viterbi算法 再次总结
查看>>
LAV Filters
查看>>
多媒体客服的选择与应用
查看>>
iOS11 automaticallyAdjustsScrollViewInsets和estimatedRowHeight适配
查看>>
订阅linux kernel的mail list
查看>>
mysql 批量更新多条记录(且不同值)的实现方法
查看>>
Hadoop上路_02-hadoop介绍和环境准备
查看>>
JFinal多参数搜索条件自动组装及参数传递
查看>>
Lua与ObjC的交互
查看>>