zoukankan      html  css  js  c++  java
  • 一起学Android之Sqlite

    概述

    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 db
    23      */
    24     @Override
    25     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 db
    33      * @param oldVersion
    34      * @param newVersion
    35      */
    36     @Override
    37     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     }

    备注

    千里之行,始于足下!

  • 相关阅读:
    Python configparser模块
    Python OS,shutil模块
    一、操作系统基础
    Python 序列化
    Python 验证码生产程序和进度条程序
    SaltStack 实践课程二 PHP+NGINX
    Android攻城狮数据存储之文件存储
    Android攻城狮数据存储之SQLite数据库简介
    Android攻城狮数据存储之SharedPreferences
    Android攻城狮读取了JSON实现图文混排
  • 原文地址:https://www.cnblogs.com/hsiang/p/10660480.html
Copyright © 2011-2022 走看看