广告
返回顶部
首页 > 资讯 > 移动开发 >Android SQLite数据库基本操作方法
  • 1745
分享到

Android SQLite数据库基本操作方法

方法sqlite数据库SQLiteAndroid 2022-06-06 04:06:11 1745人浏览 八月长安
摘要

程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–sqlite数据

程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库sqlite数据库。那么就来看一下在Android程序中怎么去操作SQLite数据库来实现一些需求的吧,仍然以一个小例子开始:

在创建Android项目之前,我们应该想一下我们要定义的数据库的相关信息和里面的表格的相关信息,为了日后数据库的更新更加方便 ,我们可以用一个专门的类保存数据库的相关信息,以后如果要更新数据库的话只需要该动这个类就行了。这样使得日后的操作更加方便。

新建一个Android工程:

在Src文件夹下新建一个包com.example.databaseHelper:

在这个包中创建两个类,首先我们来看第一个类DatabaseStatic.Java:


package com.example.databaseHelper;
public class DatabaseStatic {
 public final static String DATABASE_NAME = "BookStore.db";
 public final static int DATABASE_VERSioN = 1;
 public final static String TABLE_NAME = "book";
 public final static String BOOK_NAME = "bookName";
 public final static String ID = "_id";
 public final static String AUTHOR = "author";
 public final static String PRICE = "price";
 public final static String DATE = "sellData";
}

这个类中定义了数据库名称、版本、还有里面有一个名为“book”的表的相关信息,实现我们上面的意图,接下来是这个包里面的另外一个类MyHelper.java:


package com.example.databaseHelper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

public class MyHelper extends SQLiteOpenHelper{
 public static String CREATE_TABLE = "create table "+ DatabaseStatic.TABLE_NAME +"(" + 
   DatabaseStatic.BOOK_NAME + " varchar(30), " + 
   DatabaseStatic.ID + " Integer primary key autoincrement, " + 
   DatabaseStatic.AUTHOR + " varchar(20) not null, " + 
   DatabaseStatic.PRICE + " real)"; // 用于创建表的SQL语句
 private Context myContext = null;
 public MyHelper(Context context, String name,
   CursorFactory factory, int version) {
  super(context, DatabaseStatic.DATABASE_NAME, null, DatabaseStatic.DATABASE_VERSION);
 }
 public MyHelper(Context context)
 {
  super(context, DatabaseStatic.DATABASE_NAME, null, DatabaseStatic.DATABASE_VERSION);
  myContext = context;
 }
 @Override
 public void onCreate(SQLiteDatabase db) {
  Log.i("UseDatabase", "创建数据库");
  Toast.makeText(myContext, "创建数据库", Toast.LENGTH_SHORT).show();
  db.execSQL(CREATE_TABLE);
 }
 @Override
 public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
 } 
}

当要获取数据库对象时(通过SQLiteOPenHelper中自带的方法getWriteableDatabase或者getReadableDatabase),如果数据库文件不存在,这个类里面的onCreate方法会被调用来创建一个新的数据库文件,如果数据库文件已经存在,那么onCreate方法将不会被调用

activity_main.xml:


<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/mainLayout"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:gravity="center_horizontal"
 tools:context=".MainActivity" >
 <Button
  android:id="@+id/buttonCreateDatabase"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="创建数据库" />
 <Button 
  android:id="@+id/buttonInsertDatabase"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"/>
 <Button 
  android:id="@+id/buttonUpdateDatabase"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="更新数据"/>
 <Button 
  android:id="@+id/buttonDeleteDatabase"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="删除数据"/>
 <Button 
  android:id="@+id/buttonQueryDatabase"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="显示数据库中 Book表中的所有数据"/>
</LinearLayout>

一段布局代码,主要是5个按钮对应5中对数据库的操作:创建数据库、插入数据、更新数据、删除数据、显示(查询)数据。
那么最后是MainActivity.java:


import com.example.databaseHelper.DatabaseStatic;
import com.example.databaseHelper.MyHelper;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
 private MyHelper myHelper = null;
 private Button button = null;
 private SQLiteDatabase database = null;
 private static int bookSum = 0;
 TextView textView = null;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  textView = new TextView(this);
  LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
  layout.addView(textView);
  button = (Button) findViewById(R.id.buttonCreateDatabase);
  button.setOnClickListener(listener);
  button = (Button) findViewById(R.id.buttonInsertDatabase);
  button.setOnClickListener(listener);
  button = (Button) findViewById(R.id.buttonUpdateDatabase);
  button.setOnClickListener(listener);
  button = (Button) findViewById(R.id.buttonDeleteDatabase);
  button.setOnClickListener(listener);
  button = (Button) findViewById(R.id.buttonQueryDatabase);
  button.setOnClickListener(listener);
 }
 private View.OnClickListener listener = new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   switch(v.getId())
   {
   case R.id.buttonCreateDatabase:
    createDatabase();
    break;
   case R.id.buttonInsertDatabase:
    insertDatabase();
    break;
   case R.id.buttonUpdateDatabase:
    updateDatabase();
    break;
   case R.id.buttonDeleteDatabase:
    deleteDatabase();
    break;
   case R.id.buttonQueryDatabase:
    searchDatabase();
    break;
   }
  }
 };
 private void createDatabase() // 创建或者打开数据库
 {
  myHelper = new MyHelper(this); 
  
  myHelper.getWritableDatabase(); 
 }
 private void insertDatabase() // 向数据库中插入新数据
 {
  if(myHelper == null)
  {
   myHelper = new MyHelper(this);
  }
  database = myHelper.getWritableDatabase();
  ContentValues cV = new ContentValues();
  cV.put(DatabaseStatic.BOOK_NAME, "C Language");
  cV.put(DatabaseStatic.ID, ++bookSum);
  cV.put(DatabaseStatic.AUTHOR, "zhidian");
  cV.put(DatabaseStatic.PRICE, 42.6);
  
  database.insert(DatabaseStatic.TABLE_NAME, null, cV); 
  
  Toast.makeText(this, "插入数据成功", Toast.LENGTH_SHORT).show();
 }
 private void updateDatabase() // 更新数据
 {
  if(myHelper == null)
  {
   myHelper = new MyHelper(this);
  }
  database = myHelper.getWritableDatabase();
  ContentValues cV = new ContentValues();
  cV.put(DatabaseStatic.AUTHOR, "xiaoming");
  
  database.update(DatabaseStatic.TABLE_NAME, cV, 
    DatabaseStatic.BOOK_NAME + "= ?", new String[]{"C Language"});
  
  Toast.makeText(this, "数据更新成功", Toast.LENGTH_SHORT).show();
 }
 private void deleteDatabase() // 数据库中删除数据
 {
  if(myHelper == null)
  {
   myHelper = new MyHelper(this);
  }
  database = myHelper.getWritableDatabase();
  
  database.delete(DatabaseStatic.TABLE_NAME, DatabaseStatic.BOOK_NAME + " = ? ",
    new String[]{"C Language"});
  Toast.makeText(this, "数据删除成功", Toast.LENGTH_SHORT).show();
 }
 private void searchDatabase() // 查询数据库中的数据
 {
  if(myHelper == null)
  {
   myHelper = new MyHelper(this);
  }
  database = myHelper.getWritableDatabase();
  
  Cursor cursor = database.query(DatabaseStatic.TABLE_NAME, null, null, null, null, null, null);
  StringBuilder str = new StringBuilder();
  if(cursor.moveToFirst()) // 显示数据库的内容
  {
   for(; !cursor.isAfterLast(); cursor.moveToNext()) // 获取查询游标中的数据
   {
    str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.ID)) + " ");
    str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.BOOK_NAME)) + " ");
    str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.AUTHOR)) + " ");
    str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.PRICE)) + "\n");
   }
  }
  cursor.close(); // 记得关闭游标对象
  if(str.toString().equals(""))
  {
   str.append("数据库为空!");
   textView.setTextColor(Color.RED);
  }
  else 
  {
   textView.setTextColor(Color.BLACK);
  }
  textView.setText(str.toString());
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
}

MainActivity.java里面主要是实现了5个按钮对应的操作

SQLiteDatabase 类里面提供了对数据库表格进行插入、更新、删除、查询 的对应api,用于给对SQL语句不熟悉的开发者使用,当然我们还可以调用这个类里面的 execSQL 方法来直接执行SQL语句中的插入、更改、删除操作,用rawQuery 方法来执行SQL语句的查询语句。

Ok,整个工程的项目视图(可能有些多余。。。):

这里写图片描述

好了,运行一下:

这里写图片描述 

先点击“创建数据库”按钮:

程序中的数据库文件都储存在 /data/data/<包名>/databases文件中

运行cmd(windows系统)运行abd调试工具(如果没有将adb.exe加入环境变量中则需要写出adb.exe的完整路径)

输入 adb shell

再输入 cd /data/data/com.example.UseDataBase/databases进入对应储存文件目录

再输入 ls 显示文件中的子文件目录,接下来我们就可以对数据库文件进行操作了:

输入 sqlite3 数据库名称, 就可以对数据库进行操作了:

输入 .table 来查看当前数据库文件中的表格目录, 结果如下:

这里写图片描述 

我们可以看到我们要创建的表格确实存在,证明我们的代码确实创建了数据库文件和里面对应的表。

而我们注意到这里面还有另外一个android_metadata表,这个表是每个数据库文件都会自动生成的,不需要管。

接下来单击“插入数据”按钮:

之后 在控制台中输入 “select * from book;”,这个是查询数据库文件中的数据的SQL语句,不熟悉的小伙伴可以在网上查到一些教程

这里写图片描述 

我们可以看到我们确实在book这张表中成功的插入了一条新的数据。

接下来单击“更新数据”按钮:

这里写图片描述 

Ok,确实把书名为“C Language”的书的作者改为了 “xiaowei”,继续单击“删除”按钮:

这里写图片描述 

使用 “select * from”语句查询表中的所有数据,并没有看到有数据,我们再单击一下“显示数据库中book表中的所有数据”按钮:

这里写图片描述 

这样看来,数据库中book表中的数据确实已经被我们删除了。

这里提一下SQLite数据库操作的时候主要用到的数据类型:
整形:Integer、字符数组:varchar(10)、浮点数:real、字符串文本:text。当然SQLite还有很多的操作和支持的数据类型。

最后给出一些常用的SQL语句:

1、创建数据库表:


create table 表名(参数1 数据类型 约数条件, 参数2 数据类型 约束条件…) 

例:

代码如下:
create table person(_id Integer primary key autoincrement, name varchar(20), sex varchar(5) not null, age Integer)

2、插入数据:


insert into 表名(参数1, 参数2…) values(参数1的值, 参数2的值…) 

或者:


insert into 表名 values(参数1的值, 参数2的值) 

例:


insert into person(_id, name, sex, age) values(1, “指点”, “男”, 19) 
insert into person values(1, “指点”, “男”, 19)

3、更新数据:


update 表名 set 参数1 = 值, 参数2 = 值… where 条件1 and 条件2 or 条件3… 

更新符合条件的所有数据

where后面的条件用 “and” 或者 “or”连接

例:

代码如下:
update person set _id = 0, age = 18 where _id = 1 and age<>19 // “<>”符号代表“不等于”

4、删除数据:


delete from 表名 where 条件1 and 条件2 or 条件3… 

删除符合条件的所有数据

例:


delete from person where _id > 0 and name = “指点”

前四个操作的SQL语句可用 execSQL 方法带入参数执行

5、查询数据:


select 参数1, 参数2… from 表名 where 条件1 and 条件2… 

返回的是符合条件的所有的数据中的参数1、参数2…

例:


select _id, name, sex from person where name = “指点” or _id = 1 

返回的是: 1、“指点”、“男”

注意查询操作的SQL语句要用 rawQuery方法执行,详见代码

Ok, 终于把SQLite 的基础操作总结完了。这里所说的只是SQLite操作的冰山一角,日后还得多多学习

您可能感兴趣的文章:Android编程之SQLite数据库操作方法详解Android SQLite事务处理结合Listview列表显示功能示例Android开发笔记SQLite优化记住密码功能Android利用listview控件操作SQLite数据库实例Android批量插入数据到SQLite数据库的方法Android使用SQLite数据库的示例android SQLite数据库总结Android SQLite数据库版本升级的管理实现


--结束END--

本文标题: Android SQLite数据库基本操作方法

本文链接: https://www.lsjlt.com/news/22300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据...
    99+
    2022-06-06
    方法 sqlite数据库 SQLite Android
  • Android操作SQLite基本用法
    前言 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。...
    99+
    2022-11-12
  • Android SQLite数据库加密的操作方法
    一、前言 SQLite是一个轻量级的、跨平台的、开源的嵌入式数据库引擎,也是一个关系型的的使用SQL语句的数据库引擎, 读写效率高、资源消耗总量少、延迟时间少,使其成为移动平台数据库...
    99+
    2022-11-12
  • Python操作SQLite数据库的基本步骤
    本篇内容介绍了“Python操作SQLite数据库的基本步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.什么是SQLite数据库SQL...
    99+
    2023-06-02
  • Android应用中内嵌SQLite数据库的基本操作指南
    一、首先写一个类继承SQLiteOpenHelper类 重写他的方法指定db的名称、版本,重写oncreat和onUpgrade方法,写SQL语句创建表 public c...
    99+
    2022-06-06
    sqlite数据库 SQLite Android
  • Android编程之SQLite数据库操作方法详解
    本文实例讲述了Android SQLite数据库操作方法。分享给大家供大家参考,具体如下:SQLite and AndroidSQLite简介SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能。此...
    99+
    2023-05-30
    android sqlite lite
  • python 操作sqlite数据库的方法
    目录前言简单介绍创建或连接数据库游标创建表插入查询查询总数查询所有查询第一条分页查询更新删除总结前言 sqlite的官网 sqlite.org/index.html SQLite 作为一个SQL数据库引擎,是由C语...
    99+
    2022-06-02
    python 操作sqlite python 操作数据库
  • 基本操作mysql数据库的方法
    下文主要给大家带来基本操作mysql数据库的方法,希望这些内容能够带给大家实际用处,这也是我编辑基本操作mysql数据库的方法这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。数据库的基本操作:Sql...
    99+
    2022-10-18
  • C#操作SQLite数据库方法小结
    一、SQLite介绍 1、SQLite 简介 SQLite是一个开源、免费的小型RDBMS(关系型数据库),能独立运行、无服务器、零配置、支持事物,用C实现,内存占用较小,支持绝大数...
    99+
    2022-11-13
  • 操作mysql数据库表的基本方法
    下面一起来了解下操作mysql数据库表的基本方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望操作mysql数据库表的基本方法这篇短内容是你想要的。表的操作表示数据库存储数据的基本单位,由若干个字段组成...
    99+
    2022-10-18
  • 实例讲解Android App使用自带的SQLite数据库的基本方法
    SQLite数据库是android系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而SQLite数据库仅仅是个文件而已。虽然SQLite的有点很多,但并不是如同...
    99+
    2022-06-06
    方法 app sqlite数据库 SQLite Android
  • Sqlite数据库的基本语法有哪些
    本篇内容主要讲解“Sqlite数据库的基本语法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sqlite数据库的基本语法有哪些”吧!一、安装既然要学Sql...
    99+
    2022-10-19
  • Android操作存放在assets文件夹下SQLite数据库的方法
    本文实例讲述了Android操作存放在assets文件夹下SQLite数据库的方法。分享给大家供大家参考。具体如下: 因为这次的项目需要自带数据,所以就就把数据都放到一个SQL...
    99+
    2022-06-06
    方法 sqlite数据库 SQLite Android
  • android 拷贝sqlite数据库到本地sd卡的方法
    sqlite小型数据库,在开发的时候用于保存数据,在这不做关于它的介绍,本文只是写出了怎么拷贝应用的数据到本地sd卡中。如:一个数据库名为dandy.db的,拷贝到本地中叫se...
    99+
    2022-06-06
    方法 sd sd卡 sqlite数据库 SQLite Android
  • Android SQLite数据库操作代码类分享
    使用示例: package cn.hackcoder.beautyreader.db; import android.content.Context; import andr...
    99+
    2022-06-06
    sqlite数据库 SQLite Android
  • Android SQLite数据库的增 删 查找操作
    在Android开发中,有时我们需要对SQLite数据库进行增,删,查,找等操作,现在就来简单介绍一下,以下为详细代码。     &nb...
    99+
    2022-06-06
    sqlite数据库 SQLite Android
  • 数据库的基本操作
    数据库的操作笔记:加油! 跳过授权登录:1,关闭mysql;mysqld --skip-grant-tables 重新启动客户端不用密码就可以登录 远程登录数据库: select&n...
    99+
    2022-10-18
  • mongoDB数据库基本操作
    mongoDB中聚集集合(collection/coll)相当于mysql中的表文档相当于mysql中的每一行数据常用命令 1.获得帮助命令db.help() db.表名.help() db.表名...
    99+
    2022-10-18
  • MYSQL 数据库基本操作
    插入数据 在建立一个空的数据库和数据表时,首先需要考虑的是如何向数据表中添加数据,该操作可以使用INSERT语句来完成。使用INSERT语句可以向一个已有数据表插一个新行,也就插入一行新记录。在MySQL...
    99+
    2022-10-18
  • MySQL数据库基本操作
    目录 一、SQL语句 (mysql 数据库中的语言) 二、DDL 1.DDL语句 (1)创建新的数据库 (2)创建新的表  2.删除数据库和表  三、DML 1.insert插入新数据 2.update更新原有数据 3.delete: 删除...
    99+
    2023-09-01
    数据库 mysql sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作