2017-04-03 85 views
0

我试图在使用查询选择记录后检查记录是否存在。我在这'管理员“ABC123表一个记录”,我尝试使用下面的下面的代码:检查数据库中是否存在记录

 //Define our database variables that we will use to get our data. 
    dbhelper = new DBHelper(this); 
    SQLiteDatabase db = dbhelper.getReadableDatabase(); 

    //Define our select query here, check if username and password exists. 
    String selectQuery = "SELECT * FROM " + dbTables.userTABLE + 
      " WHERE " + dbTables.username + 
      " = " + "'" + input_name + "'" + " AND " + 
      dbTables.userpassword + " = " + "'" + input_password + "'"; 

    Cursor c = db.rawQuery(selectQuery, null); 

    //If the raw query was successfull. 
    if(c.moveToFirst()){ 

     Integer userID = c.getInt(0); 
     String userName = c.getString(1); 
     String userPassword = c.getString(2); 

     boolean exists = (c.getCount() > 0); 

     if(exists) 
     { 
      Log.d("Database", userID.toString()); 
      Log.d("Database", userName.toString()); 
      Log.d("Database", userPassword.toString()); 
     } 
     else 
     { 
      Log.d("Database NO", "NO"); 
     } 

    } 

    c.close(); 
    db.close(); 

这工作时记录时记录不存在,它不存在。然而”根本不打印任何东西。我已经尝试输入数据库中不存在的其他用户名和密码,但似乎没有打印任何内容。我究竟做错了什么?

+0

一个不选择*。它会将所有列移动到缓冲区。只选择一列。第二,不要发明自己的安全。 Ping一个服务进行身份验证。 – danny117

+0

这不涉及你的问题,但使用准备好的语句!您的代码容易受到SQL注入攻击。 – RichN

回答

3

docs

返回布尔值,表明此举是否成功。

if (c.moveToFirst()) { 
    ... 
} else { 
    // cursor is empty, print here 
} 

很显然,如果没有记录然后移动没有成功,你必须检查它else块。

+0

我很愚蠢,我完全错过了。谢谢。 –

相关问题