概述
Android对Sqlite提供了完全友好的支持,在应用程序内部,都可以通过名称访问任何的数据库。建议通过SQLiteOpenHelpe的子类并通过重写onCreate() 方法进行创建数据表。本文主要讲解Andriod开发中Sqlite的简单应用(增删改查),仅供学习分享使用。
涉及知识点
- SQLiteOpenHelper 管理创建数据库和版本管理的帮助类(抽象类)。
- onCreate 创建数据表的方法
- execSQL 执行一个非Select的语句,没有返回信息。
- SQLiteDatabase 管理Sqlite数据的对象,显示提供一组方法来管理数据库(CRUD)。
- SimpleCursorAdapter 一个简易的适配器,用来将Cursor适配数据到控件上。
- 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 }
备注
千里之行,始于足下!
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!