android - 如何使用一个按钮在从 sqlite 数据库中添加和删除数据之间切换?

标签 android sqlite

我有一个 sqlite 数据库,可以从用户那里收集数据,也可以删除它。 这是正在创建的:

db.execSQL("CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, DATA TEXT UNIQUE) ");

这是添加数据和删除数据的代码

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


 public boolean deleteData(String data){
    SQLiteDatabase db = this.getWritableDatabase();
    long result = db.delete(TABLE_NAME, "DATA = ?", new String[]{data});
    ContentValues cValues = new ContentValues();
    if (result == 0)
        return false;
    else
        return true;
}

这是我正在尝试使用的 java 按钮

public void changeData(){
    favBtn.setOnClickListener(
            new View.OnClickListener(){
                @Override
                    public void onClick(View v){
                       boolean isInserted = myDB.insertData(textView.getText().toString());

                    if(isInserted == true)
                        Toast.makeText(randomApp.this, "Added Data", Toast.LENGTH_LONG).show();

                    else
                        Toast.makeText(randomApp.this, "Data was deleted", Toast.LENGTH_LONG).show();
                        myDB.deleteData(textView.getText().toString());


                }
            }
    );
}

问题是单击此按钮时它会添加数据但不会删除所述数据。它只会继续播放“添加数据” toast 并将所述数据添加到数据库中——数据有一个唯一的约束 专栏,但我不太确定我做错了什么或遗漏了什么,因为我知道它不应该被添加两次。如果已经添加数据,它应该删除数据,反之亦然。

最佳答案

根据您的代码,删除数据代码将始终执行。并且您插入的数据将立即删除,因此唯一约束永远不会中断。您没有在 else 案例中放置任何 {},它包含两个语句;第一个被视为 else 内部的语句,第二个将被视为 if 和 else 情况之外的语句。因此,要解决此问题,您需要正确放置 {}。 (个人意见:尽量把 {} 放在 if 和 else 的情况下,即使只有一条语句)

你应该把它改成:

if(isInserted == true)
{
    Toast.makeText(randomApp.this, "Added Data", Toast.LENGTH_LONG).show();
}
else
{
    Toast.makeText(randomApp.this, "Data was deleted", Toast.LENGTH_LONG).show();
    myDB.deleteData(textView.getText().toString());
}

关于android - 如何使用一个按钮在从 sqlite 数据库中添加和删除数据之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422377/

相关文章:

java - java swing SQLite删除特定行

android - Sqlite 查询以获取匹配搜索关键字后的下一个可用字符列表

android - 以编程方式更改 CardView 的背景颜色

java - 重新打包 .jar 文件

android - 如何从绑定(bind)服务获取 Android 数据到扩展应用程序

c# - SQLite 记录是如何更新的?

sql - 根据另一个表中列的值对列使用检查约束

android - 使用android相机拍摄多张照片后出错

android - 触摸微调器时,应用崩溃

android - (关闭)在扩展 SQLiteOpenHelper 的类中创建 toast 消息