SQLite 使用详解

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

  • 继承SQLiteOpenHelper 创建数据库,数据表
  • 插入数据库数据
  • 删除数据库数据
  • 查询数据库数据
  • 修改数据库数据
  • 数据库使用案例

Android 提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问您所创建的任何数据库。如果想让自己创建的数据库供外部应用使用,请使用 ContentProvider对外提供接口。SQLite轻量级数据库使用方法如下:

1. 继承SQLiteOpenHelper 创建数据库,数据表

创建数据库表

1. 语法

创建数据表语法 如下:

创建数据表语法

2. 举例

举例 如下:

举例

3.继承SQLiteDBHelper的创建数据库、数据表

创建数据库、数据表 方法如下:

创建数据库、数据表

4.删除数据库表

删除数据库表方法如下:

DROP TABLE IF EXITS TABLE_NAME;

2. 插入数据库数据

插入数据方法一

  • 语法
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] 
VALUES (value1, value2, value3,...valueN);
  • 举例
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );

插入数据方法二

  • 语法
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
  • 举例
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

Android 封装insert()插入数据方法三

1.语法

insert(String table, String nullColumnHack, ContentValues values)

2.举例

private SQLiteDatabase db;
db.insert(SQLiteDBHelper.TABLE_NAME, null, values);

3. 删除数据库数据

删除数据库数据方法一

1.语法

DELETE FROM table_name

WHERE [condition];

2.举例

DELETE FROM COMPANY WHERE ID = 7;

2.Android封装删除数据库数据方法二

1.语法

delete(String table, String whereClause, String[] whereArgs)

举例

private SQLiteDatabase db;
db.delete(SQLiteDBHelper.TABLE_NAME, "name=?",
 new String[] { "Jack" });

4. 查询数据库数据

查询数据库方法一

1.语法

SELECT column1, column2, columnN FROM table_name;

查询表中所有数据的方法

SELECT * FROM table_name;

2.举例

//1.查询指定的列
SELECT ID, NAME, SALARY FROM COMPANY;
// 2.查询表中所有内容
SELECT * FROM COMPANY;

Android 封装查询数据库方法二

1.语法

query(String table, String[] columns, String selection,
 String[] selectionArgs, String groupBy, String having,
 String orderBy)

2.举例

private SQLiteDatabase db;
Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, null, null,
 null, null, null);

5. 修改数据库数据

修改数据库方法一

1.语法

UPDATE table_name

SET column1 = value1, column2 = value2...., columnN = valueN

WHERE [condition];

2.举例

UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;

Android update 封装修改数据库方法二

1.语法

update(String table, ContentValues values, String whereClause, String[] whereArgs)

2.举例

db.update(SQLiteDBHelper.TABLE_NAME, values, "nickname=?",
 new String[] { "J" });

6. 数据库使用案例

  • 实现效果

数据库增删改查

创建数据库

创建数据库 方法如下:

public class SQLiteDBHelper extends SQLiteOpenHelper {
 public static String DB_NAME = "person.db";
 // version 必须大于1
 public static int DB_VERSION = 1;
 public static String TABLE_NAME = "person";
 public static String _ID = "_id";
 public static String NAME = "name";
 public static String NICK_NAME = "nickname";
 public SQLiteDBHelper(Context context, String name, CursorFactory factory,
 int version) {
 super(context, name, factory, version);
 // TODO Auto-generated constructor stub
 }
 public SQLiteDBHelper(Context context) {
 super(context, DB_NAME, null, DB_VERSION);
 }
 @Override
 public void onCreate(SQLiteDatabase db) {
 // SQLite 数据库中,字段一般不区分类型,但是主键除外,主键必须是整型
 String sql = "CREATE TABLE " + TABLE_NAME + "(" + _ID
 + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL" + "," + NAME
 + " CHAR(10)," + NICK_NAME + " CHAR(10))";
 db.execSQL(sql);
 }
 // 数据库升级的处理方法,
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 if (newVersion > oldVersion) {
 // 删除老的数据表,创建新表
 String dropsql = "DROP TABLE IF EXITS " + TABLE_NAME;
 db.execSQL(dropsql);
 onCreate(db);
 }
 }
}

数据库增加数据方法实现

数据库增加数据方法实现代码如下:

 //
 public void InsertSQL(View view) {
 InstertDB();
 QueryDB();
 }
 /**
 * 插入数据处理方法
 */
 private void InstertDB() {
 ContentValues values = new ContentValues();
 values.put("name", "Jack");
 values.put("nickname", "J");
 // 返回值:最近插入的那一行的行号
 long result = db.insert(SQLiteDBHelper.TABLE_NAME, null, values);
 if (result > 0) {
 Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT)
 .show();
 } else {
 Toast.makeText(getApplicationContext(), "添加失败", Toast.LENGTH_SHORT)
 .show();
 }
 }

数据库删除内容方法实现

数据库删除内容方法实现代码如下:

 /**
 * 删除数据
 */
 private void DeleteDb() {
 int result = db.delete(SQLiteDBHelper.TABLE_NAME, "name=?",
 new String[] { "Jack" });
 if (result > 0) {
 Toast.makeText(getApplicationContext(), "删除成功", Toast.LENGTH_SHORT)
 .show();
 } else {
 Toast.makeText(getApplicationContext(), "无Jack", Toast.LENGTH_SHORT)
 .show();
 }
 }

数据库修改内容方法实现

数据库修改内容方法实现代码如下:

 /**
 * 修改数据
 */
 private void UpdateDb() {
 // update person set name="Kitty" where nickname="J"
 ContentValues values = new ContentValues();
 values.put("name", "Lucy");
 int result = db.update(SQLiteDBHelper.TABLE_NAME, values, "nickname=?",
 new String[] { "J" });
 if (result > 0) {
 QueryDB();
 }
 }

数据库查询方法实现

数据库查询方法实现代码如下:

 /**
 * 查询数据处理方法
 */
 private void QueryDB() {
 // Select * from person where name= ?
 // db.rawQuery(s)
 // cursor 游标--》 结果集合
 // 当使用SimpleCusorAdapter 时候,cursor 这个记过里面 必须包含_id,这个字段
 // Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, "name=?",
 // new String[] { "Jack" }, null, null, null);
 Cursor cursor = db.query(SQLiteDBHelper.TABLE_NAME, null, null, null,
 null, null, null);
 while (cursor.moveToNext()) {
 String name = cursor.getString(cursor.getColumnIndex("name"));
 String nickname = cursor.getString(cursor
 .getColumnIndex("nickname"));
 }
 // 将一个新的cusor跟原有的custor 交换
 adapter.swapCursor(cursor);
 adapter.notifyDataSetChanged();
 }
  • 布局如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 <Button
 android:id="@+id/insertdata"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:onClick="InsertSQL"
 android:text="增加数据" />
 <Button
 android:id="@+id/deletedata"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:onClick="DeleteSQL"
 android:text="删除数据" />
 <Button
 android:id="@+id/quarydata"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:onClick="QuarySQL"
 android:text="查询数据" />
 <Button
 android:id="@+id/modifydata"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:onClick="ModifySQL"
 android:text="修改数据" />
 <ListView
 android:id="@+id/lv"
 android:layout_width="match_parent"
 android:layout_height="match_parent" />
</LinearLayout>
  • ListView item布局如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:gravity="center_vertical"
 android:orientation="horizontal"
 android:padding="10dp" >
 <TextView
 android:id="@+id/name"
 android:layout_width="0dp"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:text="name" />
 <TextView
 android:id="@+id/nickname"
 android:layout_width="0dp"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:text="nickname" />
</LinearLayout>

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:05月01日

热门专题

昆明网站建设|昆明网站建设,昆明网站开发,昆明网站建设公司,昆明网站建设价格,昆明网站设计,昆明网站制作,网页设计,高端网站建设,高端网站设计
昆明网站建设
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
安徽中源管业有限公司|安徽中源管业有限公司,安徽中源管业有限公司介绍,安徽中源管业有限公司电话,安徽中源管业有限公司地址,安徽中源管业有限公司厂家,安徽中源管业有限公司电力管,安徽中源管业有限公司管材
安徽中源管业有限公司
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
云南综合高中|云南综合高中
云南综合高中
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部