- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法解决这个异常。我是否遗漏了一些明显的东西?
堆栈跟踪
12-05 20:07:43.129: E/AndroidRuntime(4154): FATAL EXCEPTION: Thread-1470
12-05 20:07:43.129: E/AndroidRuntime(4154): java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=6
12-05 20:07:43.129: E/AndroidRuntime(4154): at java.lang.String.startEndAndLength(String.java:593)
12-05 20:07:43.129: E/AndroidRuntime(4154): at java.lang.String.substring(String.java:1474)
12-05 20:07:43.129: E/AndroidRuntime(4154): at net.sqlcipher.database.SQLiteProgram.<init>(SQLiteProgram.java:69)
12-05 20:07:43.129: E/AndroidRuntime(4154): at net.sqlcipher.database.SQLiteQuery.<init>(SQLiteQuery.java:49)
12-05 20:07:43.129: E/AndroidRuntime(4154): at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
12-05 20:07:43.129: E/AndroidRuntime(4154): at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1420)
12-05 20:07:43.129: E/AndroidRuntime(4154): at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1389)
<小时/>
使用的查询
查询= SELECT column1,max(datetime(creation_timestamp)) FROM table_name where dfs_id=?按列2分组
(column1、column2、table_name 等是占位符 - 不是实际名称)
参数已通过 = "a08eff29ee6a71dd_1381146091100_0002"
注意:我正在使用 SQLCipher(SQLCipher 的包装器),它应该与此异常无关。
最佳答案
code导致 StringIndexOutOfBoundsException
的原因如下。
/* package */ SQLiteProgram(SQLiteDatabase db, String sql) {
mDatabase = db;
mSql = sql.trim();
db.acquireReference();
db.addSQLiteClosable(this);
this.nHandle = db.mNativeHandle;
// only cache CRUD statements
String prefixSql = mSql.substring(0, 6); // <<<< HERE
获得该异常的唯一原因是 String
少于 6 个字符。 (您的是 length=0;
即上面几行 trim()
之后为空)
没有指示您在何处或如何准确地在其中放置空字符串。它来自SQLiteDatabase.rawQuery
,但也可以从其他查询方法调用。进一步查看堆栈跟踪并查看您的代码,其中可能将空字符串传递给查询方法。
您的查询似乎也破坏了 where 子句的语法:如果有 AND
则必须是
WHERE {condition} AND {another condition expected here} GROUP BY ...
您要么忘记添加另一个 expression或者你的 AND
太多了。
并且table
是保留关键字。要使用它们作为名称,您必须引用它们。 SQLite supports引号 (")、反引号 (`) 和方括号 ([])。
关于java - SQLiteDatabase rawQuery() 中的 StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403080/
我们有这两个类 MainActivity 和一个 DBHelper DBHelper创建数据库和两个表一个表,masterPW ,只有一行两列,ID和 ColPW .一旦创建并插入数据,该表将仅包含一
我正在对我的数据库进行更新,但它不起作用。这是我的代码: list.setOnItemClickListener(new OnItemClickListener() { @Overri
我一遍又一遍地寻找这个问题的答案,但你是我唯一的机会。事情是这样的: 我有一个 DBAdapter 类、MakeListActivity 和 SeeListActivity。 在DBAdapter中我
我想实现 Android Room 持久性。 这是我的 DAO 界面。 @Dao interface FoodDao { /** * Returns all data in tabl
我得到了这个方法,它应该检查数据库中的给定数据并显示包含该数据的整行。 movies 是表的名称,year 是列的名称。 我已经尝试了几个小时,但找不到原因,为什么它会抛出此错误: 11-24 19:
因此,目前在添加到我的数据库时,我执行此 select 语句获取结果并将其添加到我的数据库中的单独列中,如下所示: public void addGasLog(GasLog gasLog){
一个简单的问题,我在互联网上找不到它,可能我看错了“术语”。但是如何制作带有“if contains”的SQL查询语句 "SELECT something FROM " + TABLE_NAME +
我的准备好的 SQL 语句有一个奇怪且无法解释的错误,它没有提供与 noprepared 语句相同的结果。 这两个版本不应该返回相同的结果吗? 准备好的版本(结果错误): sb.append(" WH
当我使用正常的 13 位条码运行以下任一查询时,我的数据库返回的结果非常好。但是,当我使用 8 位条形码运行完全相同的代码时,即使结果存在于数据库中,也不会在第二个查询中找到。对我来说,这些查询看起来
为了获得查询的多个结果,我使用了 Cursor c = mydatabase.rawQuery("command", null); 然后是 while (c.moveToNext()) { ... }
我希望能够使用原始查询按升序对单词进行排序(因为我将使用游标)。但是,当我尝试按字母顺序对单词进行排序时,我的应用程序崩溃了,出现了这个错误: android.database.sqlite.SQLi
我正在使用 String.format 将 SQLite 查询构建为 String 并将其传递给 SQLiteDatabase.rawQuery。我最后传递的整数参数被硬编码为零(我正在寻找大于零的任
如何执行下面的查询 select * from regions where field1 in('word1', 'word2') 使用 sqlite rawQuery 方法? 我试过下面的代码: S
我正在尝试使用带有 simpleCursorAdapter 的 rawQuery 来显示到 ListView ,但它一直向我抛出错误 04-29 13:36:36.453: ERROR/Android
什么都试过了。此更新不起作用。没有错误或其他什么 - 它只是不更新表格。 void SetDisable (Integer ID, boolean action){ Integ
我正在使用MySQLI Wrapper如 docs 中所述关于运行 rawQuery。由于它没有任何搜索数据库的功能,所以我自己编写了。下面是正在使用的代码。 $songs = $db->Object
Android 中 SQLite 数据库的以下 rawQuery 不返回任何结果: String query = "SELECT * FROM " + "(SELECT MATCH_ID, P
我正在运行以下命令,但以下列的列名称不明确 Cursor cursor = getWritableDatabase().rawQuery("select ((odometer) - y.odomete
我正在尝试在 WHERE 中使用动态创建的列表,例如: select * from books where id in (123, 120, 125) and bookCover = 'Hardcov
我创建了这个方法来了解我的 Sqlite 数据库中是否存在联系人。 public Cursor doesContactExist(String name) { return db.rawQue
我是一名优秀的程序员,十分优秀!