如何从android中删除SQLite数据库中的字符串?

时间:2014-07-23 16:16:37

标签: java android sqlite

嗨,我是Android开发新手。我想从数据库中删除一个字符串。怎么样。我怎么做?请帮忙。下面是我的代码。我按下按钮时尝试从数据库中删除字符串。

这是我的数据库助手类:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DbHelper extends SQLiteOpenHelper {
    static String DATABASE_NAME="userdata";
    public static final String TABLE_NAME="user";
    public static final String KEY_FNAME="fname";
    public static final String KEY_ID="id";
    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+KEY_ID+" INTEGER PRIMARY KEY, "+KEY_FNAME+" TEXT)";
        db.execSQL(CREATE_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);

    }
}

我想从数据库中删除一个字符串。

我正在做的是从活动中删除字符串。

    public void delete(String del){
    SQLiteDatabase dataBase = mHelper.getWritableDatabase();
    String[] whereArgs = new String[] { del };
    dataBase.delete(
            DbHelper.TABLE_NAME,
            DbHelper.KEY_FNAME + "=?"
                    +whereArgs, null);
    mHelper.close();
}

但是我看到它执行上面的方法app崩溃。

2 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 删除delete方法

    的第二个参数上的问号
    public void delete(String del) {
        SQLiteDatabase dataBase = mHelper.getWritableDatabase();
        String[] whereArgs = new String[] { del };
        dataBase.delete(
            DbHelper.TABLE_NAME,
            DbHelper.KEY_FNAME + "="
                +whereArgs, null);
        mHelper.close();
    }
    
  2. whereArgs移动到@hfan建议的第三个参数

    public void delete(String del) {
        SQLiteDatabase dataBase = mHelper.getWritableDatabase();
        String[] whereArgs = new String[] { del };
        dataBase.delete(
            DbHelper.TABLE_NAME,
            DbHelper.KEY_FNAME + "=?",
            whereArgs);
        mHelper.close();
    }
    

答案 1 :(得分:0)

将whereArgs作为delete()方法中的最后一个参数。

dataBase.delete(
        DbHelper.TABLE_NAME,
        DbHelper.KEY_FNAME,
                whereArgs);