java - Android数据库插入语句中用双引号替换单引号

标签 java android sqlite

假设我有一个像这样的 execquery 语句:

db1.execSQL("insert into "+TABLE_NAME+" values('"name"')");

其中 name 是包含撇号的字符串变量。例如:

name = "tom's database";

在这种情况下,我在该语句附近收到 SQLITEException。我确信这是因为单引号。

如何修改它,以便该语句不会导致崩溃,并且名称以单引号完好无损地存储在数据库中?

我在网上读到,每个这样的单引号都必须以另一个单引号作为前缀。

有人可以提供相同的代码吗?

最佳答案

重复的问题。检查How to escape unsupported character in SQLite on Android?

使用

String escapedName = DatabaseUtils.sqlEscapeString(name);
db1.execSQL("insert into "+TABLE_NAME+" values('" + escapedName + "')");

参见http://developer.android.com/reference/android/database/DatabaseUtils.html#sqlEscapeString%28java.lang.String%29

关于java - Android数据库插入语句中用双引号替换单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532125/

相关文章:

java - 设置带有推送的 key ,这样数据就不会被覆盖

sql - 将数据限制在数据库中的一个表中是更快还是占用更少的内存?

java - 从 Java 调用 Scala 方法 - Set<Object> 还是 Set<Long>?

java - 计算除以二的次数

java - BufferedImage 产生黑色背景

android - Build.Gradle 错误 : Unable to resolve dependency

java - 具有服务器发送事件 (SSE) 支持的模拟库

java - 将 targetSdkVersion 更改为 28 后出现 java.lang.ClassNotFoundException 错误

sql - 为什么 SQL DISTINCT 不能与 ORDER BY CAST 一起使用?

java - 没有 moveToFirst 的 Cursor.moveToNext