为什么sqlite没有更新行

时间:2015-04-08 06:04:51

标签: android sqlite

**喜 我厌倦了搜索和查看我的代码 请帮我! 我想更新表中的一行,我认为更新因为当显示值与(toast)时我看到行更新但当我关闭活动并打开它时值不会改变

在哪里是问题代码:**

DataBaseHelper:

    public class DataBaseHelper extends SQLiteOpenHelper {

private static String DB_PATH = "";  
private static String DB_NAME ="surbiks";
private final Context mContext; 
private SQLiteDatabase mDataBase;


static final int DATABASE_VERSION = 2;

public DataBaseHelper(Context context) {
    super(context, DB_NAME, null,DATABASE_VERSION );

    this.mContext = context;
    DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
    createDataBase();
}



private void copyDataBase(){

    try {

        InputStream mInput = mContext.getAssets().open("db/images.db");
        String outFileName = DB_PATH + DB_NAME;
        OutputStream mOutput = new FileOutputStream(outFileName);
        byte[] mBuffer = new byte[1024];
        int mLength;
        while ((mLength = mInput.read(mBuffer))>0){
            mOutput.write(mBuffer, 0, mLength);
        }
        mOutput.flush();
        mOutput.close();
        mInput.close();

    } catch (Exception e) {

    }
}

public boolean open() throws SQLException
{  

    try {
        String mPath = DB_PATH + DB_NAME;
        mDataBase = SQLiteDatabase.openDatabase(mPath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
        db = this.getWritableDatabase();
        mDataBase=this.getWritableDatabase();
        return mDataBase != null;
    } catch (Exception e) {
    }
    return false;
}

@Override
public synchronized void close() 
{
    if(mDataBase != null)
        mDataBase.close();
    super.close();
}

@Override
public void onCreate(SQLiteDatabase db) {
}

}

和我在DataBaseHelper中的更新代码

public  void set( ){

    open();
        String sql="update item_body set fav='1' where id='1'";

         mDataBase.execSQL(sql);

        close();                
}

或者:

       public boolean updateContact() 
    {
       ContentValues args = new ContentValues();
       open();
     args.put("fav", "1");
        return mDataBase.update("item_body", args, " id='1' " , null) > 0;

    }

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我编辑我的代码 这是工作 感谢

    private void createDataBase()
{
    try{
        boolean mDataBaseExist = checkDataBase();
        if(!mDataBaseExist)
        {
            //this.getReadableDatabase();
            this.getWritableDatabase();

             db = this.getWritableDatabase();

            this.close();
            copyDataBase();
        }
    }catch (Exception e) {
    }
}

答案 1 :(得分:-2)

你在创作时做什么?如果你反复覆盖相同的值,那将是结果。