Android:SQLite:删除一次

时间:2016-06-14 18:48:37

标签: android sqlite

所以我在Android中使用SQLite有点麻烦。我按照指南创建了一个表,并编写了一个插入数据的工作方法。在我有很多数据后,我想再删除它,所以我写了一个方法,放弃了我的表。 现在我遇到的问题是它不再创建表了。如果我想插入数据,它说“没有这样的表”。我真的不知道它为什么不再创建它。相关代码:

public class MeFragment extends Fragment实现了View.OnClickListener {

private SQLiteDatabase newDB;
private DatabaseHelper dbHelper;
private String TABLE_NAME = DatabaseHelper.TABLE_NAME;


ArrayList<String> myCategoryList = new ArrayList<String>() {  

};
ListView lv1;
ArrayAdapter<String> adapter1;
EditText editText;
Button addButton;


public MeFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_me, container, false);

    dbHelper = new DatabaseHelper(this.getActivity());
    preFillCategories();
    getCategories();

    editText = (EditText) view.findViewById(R.id.addCategory);
    addButton = (Button) view.findViewById(R.id.addCategoryButton);
    addButton.setOnClickListener(this);
    lv1 = (ListView) view.findViewById(R.id.listView1);
    adapter1 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, myCategoryList);
    lv1.setAdapter(adapter1);
    Utility.setDynamicHeight(lv1);
    //dbHelper.removeAllData();

    return view;
}

我的数据库帮助程序类:

公共类DatabaseHelper扩展了SQLiteOpenHelper {

public static final String DATABASE_NAME = "categories.db";
public static final String TABLE_NAME = "categories_table";
public static final String COL = "CATEGORYNAME";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
    SQLiteDatabase db = this.getWritableDatabase();

}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME +" (CATEGORYNAME TEXT PRIMARY KEY)");


}

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

}

public boolean insertData(String CATEGORYNAME){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL, CATEGORYNAME);
    long result = db.insert(TABLE_NAME, null, contentValues);
    if(result == -1){
        return false;
    }
    else{
        return true;
    }

}

public void removeAllData(){

    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DROP TABLE "+TABLE_NAME);

}

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以将removeAllData方法添加到dbhelper中,以便我们可以看到您在做什么吗?

另外,您没有做任何事情来管理db版本号。如果您在进行更改后仍然经常使用相同的版本号,那么这可能是您遇到问题的潜在原因。

此外,您应该避免直接调用任何生命周期方法(例如onUpgrade方法中的onCreate)。如果您想要从多个生命周期方法调用代码,请将其分解为自己的方法,这样您就不会冒着在当前问题之上引入生命周期问题的风险。