为什么在 Android Studio 中更新或删除 SQLite 数据库中的项目时使用 "new String[] { }"?
Why is "new String[] { }" used while updating or deleting an item in SQLite database in Android Studio?
new String[] { } 用于更新和删除 SQLite 数据库中的项目,例如:
首先,创建 table:
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
在数据库中创建 table 时是一个 INTEGER。但是,虽然 updating/deleting 任何项目,id
已经是一个 String,那么我们为什么要使用 new String[] {id}?
您提到的参数 new String[] {id} 用于 WHERE 子句 arguments.It 在您使用 WHERE 子句时很有帮助。这些东西有助于提供论据。
如需进一步说明,您可以访问下方 link:
这是个好问题。
为什么要新建 String[] {id}?
这里new String[] {id}是String数组的初始化,需要数组,因为参数个数可以是一个也可以是多个
为什么这个数组是String类型的?
我们传给query的参数可以是integer/float/string中的任何一个,就是trivial/easy/human-readable转换成integer/float 到 String 但不是 vice-versa。在 Java 中,代码必须被修复(不像 Python),因此创作者必须坚持使用 String,我猜。
奖金:
这种SQL查询生成方式(而不是直接写查询)被称为prepared-statements/Parameterized-Queries,是对抗SQL-Injection.
的好方法
如 4.2. Type Conversions Prior To Comparison 中所述,在此比较之前 ID = ?
,对于您传递的参数,尽管它是一个字符串,但应用了 NUMERIC
亲和力,因为列ID
有 INTEGER
亲和力。
所以规范是:你总是传递一个字符串参数,但是当执行 sql 语句时,这个字符串参数将隐式 converted/treated 作为字符串,如果它与字符串进行比较(具有 TEXT
亲和力的列),或与数字进行比较的数字(具有 INTEGER
或 NUMERIC
亲和力的列)。
new String[] { } 用于更新和删除 SQLite 数据库中的项目,例如:
首先,创建 table:
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
在数据库中创建 table 时是一个 INTEGER。但是,虽然 updating/deleting 任何项目,id
已经是一个 String,那么我们为什么要使用 new String[] {id}?
您提到的参数 new String[] {id} 用于 WHERE 子句 arguments.It 在您使用 WHERE 子句时很有帮助。这些东西有助于提供论据。 如需进一步说明,您可以访问下方 link:
这是个好问题。
为什么要新建 String[] {id}?
这里new String[] {id}是String数组的初始化,需要数组,因为参数个数可以是一个也可以是多个
为什么这个数组是String类型的?
我们传给query的参数可以是integer/float/string中的任何一个,就是trivial/easy/human-readable转换成integer/float 到 String 但不是 vice-versa。在 Java 中,代码必须被修复(不像 Python),因此创作者必须坚持使用 String,我猜。
奖金:
这种SQL查询生成方式(而不是直接写查询)被称为prepared-statements/Parameterized-Queries,是对抗SQL-Injection.
的好方法如 4.2. Type Conversions Prior To Comparison 中所述,在此比较之前 ID = ?
,对于您传递的参数,尽管它是一个字符串,但应用了 NUMERIC
亲和力,因为列ID
有 INTEGER
亲和力。
所以规范是:你总是传递一个字符串参数,但是当执行 sql 语句时,这个字符串参数将隐式 converted/treated 作为字符串,如果它与字符串进行比较(具有 TEXT
亲和力的列),或与数字进行比较的数字(具有 INTEGER
或 NUMERIC
亲和力的列)。