【发布时间】:2016-04-02 10:17:27
【问题描述】:
我正在开发一个安卓应用程序,用户在其中输入他们的姓名、姓氏、电子邮件和密码以进行注册。这个输入过程工作得很好,现在我想每次当用户输入他/她的电子邮件时检查输入的电子邮件是否已经存在于我的数据库中。
为此,我在 DBHelper 类中尝试了以下方法:
public String Exist(String user) {
String username="";
SQLiteDatabase db = this.getReadableDatabase();
try {
Cursor c = db.query(TABLE_NAME, null, "COL_4" + "=?", new String[]{String.valueOf(user)},null, null, null);
if (c == null) {
return username;
}
else {
c.moveToFirst();
username = c.getString(c.getColumnIndex("COL_4"));
}
}
catch(Exception e){
}
return username;
}
这里 TABLE_NAME 是我的表的名称,COL_4 是包含用户电子邮件的列,我将用户输入的输入字符串(电子邮件)作为此方法的参数传递。
我从我的主要活动类中调用此方法,如下所示:
String myUser = email.getText().toString();
String storedUser = myDb.Exist(myUser);
//If Username exist
if (myUser.equals(storedUser)) {
Toast.makeText(getApplicationContext(), "Username already exist!", Toast.LENGTH_SHORT).show();
return;
}
这里我将输入的电子邮件存储在 myUser 变量中。
问题是即使输入的电子邮件与以前输入的相同,它也允许将数据插入数据库。这意味着每次发生异常并返回“”时。 Exists 方法有什么错误?
【问题讨论】:
-
不要吞下异常:
catch(Exception e){ }。如果发生异常,则返回"",并且您知道认为该电子邮件尚不存在。 -
那么出现异常怎么办?
-
那为什么每次都会出现异常呢?
-
因为编程错误?为您的问题添加例外
-
列的名称是什么? EMAIL 还是 COL_4?
标签: java android database sqlite