一起学Android之Sqlite

大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述一起学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)。
示例效果图如下图所示:
一起学Android之Sqlite

文章图片

数据库帮助类代码如下:
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 12private static final String DB_NAME="persons.db"; 13 14private static final int DB_VERSION=1; 15 16public DatabaseHelper(Context context) { 17super(context, DB_NAME, null, DB_VERSION); 18} 19 20/** 21* 创建数据库,指定数据库名称,版本号 22* @param db 23*/ 24@Override 25public void onCreate(SQLiteDatabase db) { 26String sql="create table person(_id integer primary key autoincrement not null, name char(10),nickname char(10))"; 27db.execSQL(sql); 28} 29 30/** 31* 数据库升级 32* @param db 33* @param oldVersion 34* @param newVersion 35*/ 36@Override 37public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 38if(newVersion> oldVersion){ 39onCreate(db); 40} 41} 42 }

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

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

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

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

备注千里之行,始于足下!
 

    推荐阅读