在android中使用插入查询时出错

时间:2015-09-05 18:18:04

标签: android sqlite

我正在将一些数据和图片保存到我的数据库中我发现在db中保存我的图片的真正方法是使用contentvalue所以这个代码:

                try 
                {

                    MyDataBase = new MyDatabase(this);
                    mydb = MyDataBase.getWritableDatabase();
                    ContentValues tempval;
                    for (int j = 0; j < myarray.arrtitle.length; j++)
                    {
                        tempval = saveimage(myarray.arrpic.get(j),myarray.arrpath[j]);
                        mydb.execSQL("INSERT INTO news (title,content) VALUES  (\"" + myarray.arrtitle[j] +
                        "\",\"" + myarray.arrcontent[j] + "\"" + ")");
                        mydb.insert("news", null, tempval);
                    }
                    mydb.close();
                    Toast.makeText(getApplicationContext(), "database 2 done", Toast.LENGTH_LONG).show();
                    count = 5;
                } catch (Exception e) {
                    // TODO: daabase error2
                    Toast.makeText(getApplicationContext(), "data error2", Toast.LENGTH_LONG).show();
                }

这就是我正确保存数据的方法。 但问题是当我插入我的图像时,它插入新行而不是插入与标题相同的行。 有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果要编辑现有行的某些列数据,则需要使用UPDATE查询。每次执行INSERT查询时,都会创建一个新行。

您正在执行INSERT查询两次,一旦插入标题和内容,然后在下一个查询中插入图像路径。而是在保存图像路径时,您应该对保存相应数据的同一行执行UPDATE查询。

使用LIKE而不是=运算符。

// updating row 
db.update(TABLE, tempval , "title LIKE ?", new String[] { myarray.arrtitle[j] })