数据库插入没有发生

时间:2012-12-20 04:35:09

标签: java android android-sqlite

int i=0;
ContentValues values = null;

for ( SortedMap.Entry<Integer, String> entry : mapDefect.entrySet() ) {
    if( i++ < count )
        continue;
        if( i < arrlst.size() ) {
            values = new ContentValues();
            Log.d("MAP", "Id :"+entry.getKey()+"Des :"+entry.getValue()+"Co :"+ arrlst.get(i));
            values.put( MARKER_COORD, arrlst.get( i ) );
            values.put( MARKER_ID, entry.getKey() ); 
            values.put( DEFECT_DESCRIPTION, entry.getValue() );
            values.put( IMAGE_ID_F, imageID + 1 );
            Log.d( "Err", "in insertNewDefectsDescription" );
            long rowId = db.insert( TABLE_DEFECTS, null, values );
            long rowId1 = rowId;
            i++;
        }
    }

所以,我想在count变量之后访问arraylist,这就是为什么: -

if(i++<count)
    continue;

但是,当我在'insert'行插入一个断点时,它不起作用。该行根本不执行,因此数据未插入数据库。出了什么问题?

'values'为空。

4 个答案:

答案 0 :(得分:1)

您的代码有点难以理解 以下是我的建议

1.你为什么不在for循环之前做i = count。它可以节省大量的迭代次数

<强> 2。您的i可能会增加两次,例如

if( i++ < count ) //suppose this condition is false

即使条件为假i ++也会发生任何你的增加,然后在

if( i < arrlst.size() ) {
...
i++;// It increments i again
}

这里的逻辑错误

答案 1 :(得分:0)

为什么在if条件下你的i也有增量?会发生什么,每次迭代你的i增加2。也许你想要做的是在循环之前首先将你的i初始化为1,然后你可以在if条件下删除你的i中的++,或者你可以在循环结束时删除你的i中的++。 / p>

答案 2 :(得分:0)

没有看到count,就很难知道问题解决方案。我的猜测是i ++总是小于count,因此导致循环体的其余部分被跳过并且下一个元素被检查。你最想要的。 if(i++>count)...

此外,对一行{ }块使用花括号if是一个好习惯

答案 3 :(得分:0)

问题解决了。 我用if if else。在else区域,我增加了i变量,它工作正常。

if(i<count)
{
    ..
}
else
    i++;