【发布时间】:2015-02-08 09:04:12
【问题描述】:
我的 android 应用程序使用 SQLITE。 当我尝试从某个表中检索数据时,一切正常,除了一列特别是 varchar 类型并包含一个巨大的文本(base64 字符串将被转换为文件)。
当我尝试从该表中检索任何其他列时,检索成功,但在该列上出现错误:
java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the
Cursor is initialized correctly before accessing data from it.
这是我的代码:
String Filequery= "Select FileName from Hyperlinks_GVT where Taskcode='"+currentTaskCode+"'
and Name='"+tempItem.getText()+"'";
Log.d(TAG,"Query is: "+Filequery);
try {
cursor3 = MainActivity.myDataBase.rawQuery(Filequery, null);
String Data="";
byte[] btData;
if (cursor3 != null && cursor3.moveToFirst()){
do {
Data=cursor3.getString(cursor3.getColumnIndex("FileName"));
} while (cursor3.moveToNext());
}
cursor3.close();
桌子:
CREATE TABLE [Hyperlinks_GVT](
[ID] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
[Taskcode] [int] NOT NULL,
[TaskYear] [int] NOT NULL,
[Name] [varchar](100) NOT NULL,
[FileName] [varchar] NOT NULL,
[Notes] [varchar](200) NOT NULL,
[UserID] [nvarchar](50) NOT NULL,
[CreationDT] [varchar](100) NOT NULL)
FIleName 为大数据列 注意:当我使用 SQLITE 管理器在 Firefox 中执行查询时,查询会检索结果,因此查询很好并且没有错误。 任何帮助将不胜感激。
【问题讨论】:
-
尝试在 FileNamem 中使用硬编码的小文本,并检查它是否有效
-
它适用于小文本
-
我应该更改列类型吗?虽然我不认为这是一个问题,因为该列正如我所说的那样保存数据并且可以在 SQLITE 管理器中查看,所以代码是我认为的问题
-
谁给了 -1 以及为什么。我不清楚这个问题,在我问之前我已经尝试解决了吗?!
-
一个 blob 需要更少的存储空间,但是对于足够大的文件,这并不重要。在任何情况下,大字符串和 blob 的行为都是相同的。