我编写了以下代码,用于比较记录与数据库记录。比较但插入所有记录
public void onClick(View v) {
if(v.equals(add))
{
if(ifExisting())
{
insert();
Log.e("Data Inserting","true");
Intent i=new Intent(AddCategory.this,ShareFolioActivity.class);
startActivity(i);
//Toast.makeText(AddCategory.this, "Already exists",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(AddCategory.this, "Already exists",Toast.LENGTH_LONG).show();
Log.e("Data Inserting","false");
}
}
}
boolean ifExisting() {
Log.e("wquery","SELECT * FROM sharelist WHERE category='"+category.getText().toString()+"'");
Cursor c = db.rawQuery( "SELECT category FROM sharelist WHERE category='"+category.getText().toString()+";'",null);
if(c.getCount()==-1)
{
Log.e("Condition true","true");
return false;
}
else
{
Log.e("Condition true","false");
return true;
}
}
答案 0 :(得分:0)
您有if(ifExisting())
{
insert();
不应该是if(!ifExisting())
{
insert();
否则,如果存在则插入。
答案 1 :(得分:0)
如果查询返回0行,您似乎期望c.getCount()
将为-1。为什么不回0? (我不记得看到它返回-1的情况,但也许我的记忆有问题。)
无论如何,检查c.getCount() <= 0
似乎更安全。
此外,此查询
Cursor c = db.rawQuery( "SELECT category FROM sharelist WHERE category='"+category.getText().toString()+";'",null);
格式不正确 - 请查看";'"
的结尾。你想在那里"'"
。 (传递给rawQuery
的查询字符串不得以分号结尾;否则,"';"
将是正确的选择。)
正如其他人在其他主题上对你说的那样,你真的不想通过连接来进行查询;使用selectionArgs参数是一种更安全的传递查询值的方法。