- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 rawQuery
和 execSQL
方法来操作我的数据库,而不是 .update
、.insert
等。我正在尝试使用以下代码执行更新:
db.execSQL("UPDATE configuration " +
"SET number_fields = " + number_fields + ", "
+ "frequency = " + frequency + ", "
+ "ag = " + ag + ", "
+ "number_alarms = " + number_alarms + ", "
+ "failed_rapper = " + failed_rapper + ", "
+ "max_mv = " + max_mv + ", "
+ "max_nav = " + max_nav + " "
+ "WHERE serial_id = " + Integer.toString(id) + ";");
执行此操作后,会出现一个日志,说明更新已发生并且似乎有效,但当我尝试在表上执行选择语句时,它返回以下错误:
06-10 10:01:47.564: W/System.err(3815): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
现在,我在 Android 中使用 SQLite 数据库浏览器手动插入的不同数据上执行了相同的 SELECT,它工作正常。我还在 SQLite 浏览器中执行了相同的 UPADTE,它在那里工作。因此我知道问题是在 Android 上运行时更新命令不起作用。
问题:为什么 UPDATE 命令在 execSQL()
方法中不起作用?
最佳答案
来自Android SQLiteDatabase class documentation:
Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.
It has no means to return any data (such as the number of affected rows). Instead, you're encouraged to use insert(String, String, ContentValues), update(String, ContentValues, String, String[]), et al, when possible.
然后:
For UPDATE statements, use any of the following instead.
update(String, ContentValues, String, String[])
updateWithOnConflict(String, ContentValues, String, String[], int)
据我所知,execSQL
方法更多用于更高级别的数据库操作,例如创建表和更改模式,以及 .query
、.update
、.delete
等方法应该用于修改行。我不确定除了 .update
之外您还有其他选择吗?执行此操作。
关于android - 带有更新的 execSQL() 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17026633/
我正在尝试在 Android SQLite 数据库中创建一个表。但是 execSQLite 方法在 on create 方法中不起作用。它给了我信息- Non-static method 'execS
我编写了一个调度程序应用程序,当用户使用以下命令从互联网更新日程安排时,它会将日程安排数据添加到数据库中: sqLiteDatabase.execSQL("INSERT OR IGNORE INTO
我的 execSQL() 命令出现错误。 Eclipse 说我需要在我的 DBHelper 类中定义它。我该怎么做呢?我不熟悉使用 SQL 数据库及其命令。 这是我的类(class)代码; packa
我有以下 execSQL 抛出语法错误并导致我的应用程序崩溃。考虑到我已经转义了单引号和双引号,我不知道为什么。 代码如下: database.execSQL("insert into " + TAB
好吧,也许我只是不明白这一点,但是,当我尝试删除多个表时,比如 static final String DROP_TABLES = "DROP TABLE IF EXISTS ?,?,?,?"; 并尝
您好,我有这个函数可以使用 TUniQuery 更新我的 Access DB: var Res:Boolean; begin Res:=false; try with MyQuery do
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我正在尝试获取从 EditText 字段存储的一些值并将它们存储到我的 SQLLite 数据库中。 我有以下字符串变量: 网站名称_地址_用户_pass 这是我尝试使用的 Sql 命令: SQLite
我正在尝试使用 rawQuery 和 execSQL 方法来操作我的数据库,而不是 .update、.insert 等。我正在尝试使用以下代码执行更新: db.execSQL("UPDATE conf
我正在为Android 3.2版本编写应用程序,然后要求升级的ASUS Eee Pad TF01,这将Android版本更改为4.0.3。从那时起我就遇到了应用程序的问题,我将其追踪到 SQLite
为什么这不起作用?? db.execSQL("INSERT INTO PARTIES (PARTY_NAME, PARTY_COUNT) SELECT DISTINCT(PARTY), COUNT(P
我正在尝试制作使用SQLite数据库的简单注册/登录应用程序,到目前为止我得到了这段代码。这是我的“注册” Activity ,我猜它应该在按下注册按钮后将用户名和 pin(密码)实现到数据库,遗憾的
我在这里看到了很多类似的问题,但没有一个能解决我的问题。我正在制作一个将 XML 内容放入数据库的应用程序。一切工作正常,但是当我第二次打开应用程序时,会添加越来越多的值。我试图删除表,删除数据库,甚
我有这行代码: String insertSQL = "INSERT INTO " + BOOK_NAME + " (id, title, date, type, excerpt, c
这个问题在这里已经有了答案: Unfortunately MyApp has stopped. How can I solve this? (23 个回答) 关闭 7 年前。 这是我的 onCrea
我想有一个选项来调用“rawQuery”并传入一个整数列表,但看起来我不能:所有“rawQuery”方法都需要字符串数组... 为什么?我可以为每个传递的 int 对象调用“toString”,但我在
我按照标准教程使用 Android 构建数据库。我创建了一个名为 DbHelper 的类,它扩展了 SQLiteOpenHelper。我已经重写了创建处理程序来执行一个字符串。 @Override p
系统/版本信息: Windows Server 2019 数据中心 Ubuntu 16.04 Python 2.7 pip 20.1 我正在尝试使用以下命令安装最新版本的 execsql (1.72)
在 Delphi 中,每当我使用 TQuery 对数据库执行 SELECT 时,我都会在 Query.Open 后面加上 try..finally,并在finally 部分中使用 Query.Clos
我们如何获得受 FDQuery.ExecSQL 影响的计数对 SQLITE 数据库的 table1 执行 INSERT、UPDATE 或 DELETE 命令后 FireDAC 命令? FDQuery.
我是一名优秀的程序员,十分优秀!