首页 > 数据库 >安卓数据库操作

安卓数据库操作

时间:2024-02-22 16:36:24浏览次数:35  
标签:安卓 db public cursor values new 操作 数据库

安卓数据库的操作:今天主要学了下安卓数据库方面的简单知识。数据库主要用于复杂的数据储存。

安卓数据库简介:安卓SQLite数据库是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很 少,通常只需要几百KB的内存就足够了。SQLite不仅支持标 准的SQL语法,还遵循了数据库的ACID事务,所以只要你以前使用过其他的关系型数据库,就 可以很快地上手SQLite。而SQLite又比一般的数据库要简单得多,它甚至不用设置用户名和密码 就可以使用。

数据库的创建:Android为了让我们能够更加方便地管理数据库,专门提供了一个SQLiteOpenHelper帮助类,借 助这个类就可以非常简单地对数据库进行创建和升级。

新建一个Java类继承SQLiteOpenHelper类,在主活动中调用该类即可实现对数据库的创建。

~~~
public class MyDatabaseHelper extends SQLiteOpenHelper {

    public static final String CREATE_BOOK = "create table book ( " +
            "id integer primary key autoincrement," +
            "author text," +
            "price real," +
            "pages integer," +
            "name text )";

    private Context mContext;

    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_BOOK);
        Toast.makeText(mContext, "数据库成功创建", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          
    }
}
~~~

~~~
public class NormalActivity extends AppCompatActivity {
    private MyDatabaseHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.normal_layout);
   dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);  
          Button bt3 = findViewById(R.id.create_database);
             bt3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbHelper.getWritableDatabase();
            }
        });
    }
}
~~~

如果想建立多个数据库,由于就需要对数据库进行更新升级,这里建立两个数据库,重写onUpgrade() 方 法。

```
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists Book");
        db.execSQL("drop table if exists Category");
        onCreate(db);
}
```

数据库的增改删查

~~~
add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("name", "暴走大漫画");
                values.put("author", "张子豪");
                values.put("pages", 514);
                values.put("price", 18.9);
                db.insert("Book", null, values);
                values.clear();
                values.put("name", "金刚大力手");
                values.put("author", "王子顺");
                values.put("pages", 60);
                values.put("price", 5);
                db.insert("Book", null, values);
                Toast.makeText(NormalActivity.this, "添加数据成功", Toast.LENGTH_SHORT).show();
            }
        });
~~~

~~~
update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("price", 10);
                db.update("Book", values, "name=?", new String[]{"暴走大漫画"});
            }
        });
~~~

~~~
delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db=dbHelper.getWritableDatabase();
                db.delete("Book","pages>?",new String[]{"500"});
            }
        });
~~~

~~~
query.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db=dbHelper.getWritableDatabase();
                Cursor cursor=db.query("Book",null,"pages>?",new String[]{"10"},null,null,null,null);
                if(cursor.moveToFirst()){
                    do{
                        String name=cursor.getString(cursor.getColumnIndex("name"));
                        String author=cursor.getString(cursor.getColumnIndex("author"));
                        int pages=cursor.getInt(cursor.getColumnIndex("pages"));
                        double price= cursor.getDouble(cursor.getColumnIndex("price"));
                        Log.d("数据库查找","书名:"+name);
                        Log.d("数据库查找","作者:"+author);
                        Log.d("数据库查找","页数:"+pages);
                        Log.d("数据库查找","价格:"+price);
                    }while (cursor.moveToNext());
                }
                cursor.close();
            }
        });
~~~

 

标签:安卓,db,public,cursor,values,new,操作,数据库
From: https://www.cnblogs.com/muzhaodi/p/18027609

相关文章

  • 【数据结构】C语言实现二叉树的相关操作
    树定义树(Tree)是n(n>=0)个结点的有限集若n==0,称为空树若n>0,则它满足如下两个条件:有且仅有一个特定的称为根(Root)的结点其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3,...Tm,其中每一个集合本身又是一棵树,称为根的子树(SubTree)术语结点:数据元素结点的度:结点......
  • NanoFramework操作ESP32(一)_基础元器件篇(二十六)_ KY-028热敏传感器(数字温度)
    一、元器件介绍    检测环境温度1、针脚用途编号名称功能1AO模拟量输出2G电源地3+电源正4DO开关量输出,温度高于某值时输出高电压,低于阀值时输出低电平二、示例代码1、代码:元器件的针脚ESP32模块的针脚AO;声音......
  • flink之核心抽象--Window窗口及窗口操作全面详解
    flink之核心抽象--Window窗口及窗口操作全面详解标签:flink 窗口 String val -- 元素 Long window1.Windows1.1.基本概念窗口是处理无限流的核心。窗口将流划分为固定大小的“桶”,方便程序员在上面应用各种计算。Window操作是流式数据处理的一种非常核心的抽象,......
  • NanoFramework操作ESP32(一)_基础元器件篇(四十一)_ 线性霍尔传感器
    一、元器件介绍    触摸感应头即可激活电路。1、针脚用途编号名称功能1AO模拟量输出2G电源地3+电源正4DO开关量输出,检测到磁性时输出高电压,低于阀值时输出低电平二、示例代码1、代码:元器件的针脚ESP32模块的针脚......
  • 操作系统和应用
        1、监控程序的主要功能:程序的加载和运行2、在操作系统上运行的程序称为应用或应用程序3、调用操作系统的功能称为系统调用因为用机器员编写程序,在使用开关将程序输入这一过程非常麻烦,因此就有人开发出了操作系统的原型——仅具有加载和运行功能的监控程序。  ......
  • docker安装部署mysql8以及创建数据库
    mysql安装dockerpullmysql:8.0#创建mysql相关目录mkdir-p/server/data/docker/mysql/master/datadirdockerrun--namemysql-p53306:3306--restart=always--privileged=true\-v/server/data/docker/mysql/master/datadir:/var/lib/mysql\-v/s......
  • uniapp之原生APP本地打包成原生APP本地打包安卓APK
    前言由于项目要求将uniapp打包成安卓应用,所以今天来学习如何将uniapp项目打包成安卓apk。出于企业级代码安全考虑,所以选择了原生APP本地打包的方式进行打包,杜绝防止代码泄漏的风险。......
  • NanoFramework操作ESP32(一)_基础元器件篇(三十)_ 人体触摸传感器
    一、元器件介绍    TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的输出端为低电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围(1mm~25mm)内时,红外线被反射回来且强度......
  • 数据库三范式
    1.简介三大范式是Mysql数据库设计表结构所遵循的规范和指导方法,目的是为了减少冗余,建立结构合理的数据库,从而提高数据存储和使用的性能。三大范式之间是具有依赖关系的,比如第二范式是在第一范式的基础上建设的、第三范式是在第二范式的基础上建设的。当然Mysql数据库的范......
  • MySQL 数据库
    Linux下MySQL的安装与使用安装前说明查看是否安装过MySQL如果你是用rpm安装,检查一下RPMPACKAGE:rpm-qa|grep-imysql#-i忽略大小写检查mysqlservice:systemctlstatusmysqld.serviceMySQL的卸载1.关闭mysql服务systemctlstopmysqld.service2.查看当......