首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android数据库插入异常

android数据库插入异常
EN

Stack Overflow用户
提问于 2012-10-10 02:27:19
回答 1查看 289关注 0票数 1

在for循环和打印日志之后,在调用insert函数时抛出了一个UnknownFormatConversionException,我捕捉到了这个异常,但是如何删除它呢?我不知道是什么原因造成的,

代码语言:javascript
运行
复制
try {
        List<Status> timeline = 
            ((YambaApp) getApplication()).getTwitter().getPublicTimeline();
        for (Status status : timeline) {
            Log.d(TAG, String.format("%s: %s", status.user.name,
                    status.text));
            statusData.insert(status);

            }
    } catch (TwitterException e) {
        Log.d(TAG,"Failed to access twitter service  ",e);
    } catch(NullPointerException a){
        Log.d(TAG,"Pref had been changed and twitter object is null",a);
    } catch (UnknownFormatConversionException u){
        Log.d(TAG,"exception "+ u);
    }

以下是插入函数的代码:

代码语言:javascript
运行
复制
public void insert(Status status){
    db=dbHelper.getWritableDatabase();

    ContentValues value= new ContentValues();
    //converting BigInteger to String
    BigInteger bi=status.id;
    String status_id= new String(bi.toByteArray());


    value.put(C_ID, status_id);
    value.put(C_CREATED_AT, status.createdAt.getTime());
    value.put(C_TEXT, status.user.name);
    value.put(C_TEXT, status.text);

    db.insert(TABLE, null, value);
}

下面是抛出的异常的完整堆栈跟踪

代码语言:javascript
运行
复制
10-10 06:05:22.648: E/AndroidRuntime(627): FATAL EXCEPTION: IntentService[RefreshService]
10-10 06:05:22.648: E/AndroidRuntime(627): java.util.UnknownFormatConversionException: Conversion: i
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.util.Formatter$FormatToken.unknownFormatConversionException(Formatter.java:1397)
10-10 06:05:22.648: E/AndroidRuntime(627):  at     java.util.Formatter$FormatToken.checkFlags(Formatter.java:1334)
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.util.Formatter.transform(Formatter.java:1440)
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.util.Formatter.doFormat(Formatter.java:1079)
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.util.Formatter.format(Formatter.java:1040)
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.util.Formatter.format(Formatter.java:1009)
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.lang.String.format(String.java:1998)
10-10 06:05:22.648: E/AndroidRuntime(627):  at java.lang.String.format(String.java:1972)
10-10 06:05:22.648: E/AndroidRuntime(627):  at com.example.yamba.StatusData$DbHelper.onCreate(StatusData.java:59)
10-10 06:05:22.648: E/AndroidRuntime(627):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:165)
10-10 06:05:22.648: E/AndroidRuntime(627):  at com.example.yamba.StatusData.insert(StatusData.java:32)
10-10 06:05:22.648: E/AndroidRuntime(627):  at com.example.yamba.RefreshService.onHandleIntent(RefreshService.java:32)
10-10 06:05:22.648: E/AndroidRuntime(627):  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
10-10 06:05:22.648: E/AndroidRuntime(627):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 06:05:22.648: E/AndroidRuntime(627):  at android.os.Looper.loop(Looper.java:137)
10-10 06:05:22.648: E/AndroidRuntime(627):  at android.os.HandlerThread.run(HandlerThread.java:60)
10-10 06:05:22.968: W/IInputConnectionWrapper(627): showStatusIcon on inactive InputConnection
EN

回答 1

Stack Overflow用户

发布于 2012-10-10 03:27:31

insert()方法中更改

代码语言:javascript
运行
复制
String status_id= new String(bi.toByteArray());

代码语言:javascript
运行
复制
String status_id = bi.toString();

调用bi.toByteArray()将返回一个字节数组,其中包含BigInteger的二进制表示形式。您无法正确地将其转换为您正在做的String。只需使用BigInteger提供的toString()方法即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12806142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档