Android正在读取字符串为blob

时间:2011-12-12 04:35:15

标签: android database sqlite

我在TEXT字段中的TEITE数据库中有以下文本

  

他出生的确切日期尚不清楚。然而,意见的共识是他出生于公元前580年左右。他比他的朋友年轻。

     

他属于一个贵族家庭。

当我从数据库中读取此内容并添加到ArrayList<String>时,我收到以下错误消息

14): unknown error: Unable to convert BLOB to string
14): unknown error: Unable to convert BLOB to string
14): unknown error: Unable to convert BLOB to string
14): unknown error: Unable to convert BLOB to string
14): Closing Cursor

我很困惑为什么它会成为一个blob?这是我正在阅读的内容

String select = "SELECT heading,text FROM details WHERE chapter_id = \'" + tocIDX + "\'" ;

Constants.c = Constants.myDataBase.rawQuery(select, null);



int headingIndex = Constants.c.getColumnIndex("heading");
int headingTextIndex = Constants.c.getColumnIndex("text");

Constants.c.moveToFirst();
    if (Constants.c != null) {


        if (Constants.c.isFirst()) {

            int i = 0;

                /* Loop through all Results */ 

                do {

                        i++;
                        if(Constants.Debug){
                            Log.d("toc", "Row # " + i);}

                        try{
                              headingIndex.add(Constants.c.getString(headingIndex));
                            headingTextIndex.add(Constants.c.getString(headingTextIndex));          


    } catch (Exception e) {if(Constants.Debug){Log.d("toc", e.getMessage());}   }


                } while (Constants.c.moveToNext());

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为标题和文本列的数据类型定义为BLOB。你可以将数据子串到你有两种方式。

  • 方法-1)使用SUBSTRING从BLOB数据中获取字符串。

  • 方法-2)如果可能,使用VARCHAR而不是BLOB作为数据类型