我有一个 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/