首页 > 解决方案 > 为什么在 Android Studio 中更新或删除 SQLite 数据库中的项目时使用“new String[] {}”?

问题描述

new String[] { }在从SQLite数据库更新和删除项目时使用,例如:

首先,创建表:

db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT)");

更新项目:

db.update(TABLE_NAME, contentValues, "ID = ?",new String[] {id});

删除项目:

db.delete(TABLE_NAME, "ID = ?",new String[] {id});

在这里,在数据库中创建表时ID是一个INTEGER 。但是,在更新/删除任何项目时,id已经是一个String,那么我们为什么要使用new String[] {id}

标签: javaandroidsqliteandroid-sqlite

解决方案


这是一个很好的问题。

为什么是 new String[] {id} ?

这里new String[] {id}是一个String数组的初始化,需要一个数组,因为参数的个数可以是一个也可以是多个。

为什么这个数组是 String 类型的?

我们传递给查询的参数可以是integer/float/string之间的任何参数,将integer/float转换为String是微不足道的/容易的/人类可读的,但反之则不然。在 Java 中,代码必须是固定的(与 Python 不同),因此我猜创作者必须坚持使用String 。

奖金:

这种 SQL 查询生成方式(而不是直接编写查询)称为prepared-statements/Parameterized-Queries,是对抗SQL-Injection 的好方法。


推荐阅读