java如何在每次将数据字段(如电子邮件)插入数据库时发现其唯一性?
我正在开发一个安卓应用程序,用户可以在其中输入姓名、姓氏、电子邮件和密码进行注册。这个输入过程非常好,现在我想检查每次用户输入他/她的电子邮件时,输入的电子邮件是否已经存在于我的数据库中
为此,我在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是包含用户电子邮件的列,我将用户输入的输入字符串(email)作为此方法的参数传递
我从我的主活动类调用此方法,如下所示:
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
方法中的错误是什么
# 1 楼答案
好吧,我自己找到答案了! 我在DBHelper类中使用了以下代码:
在我的主要活动中有以下代码:
# 2 楼答案
您可以在查询本身中得到这一点 *从表格_NAME中选择*,其中Col='user email id'* 如果正确传递表名和列名,它将返回光标。下面我给出了一个方法,如果表中存在电子邮件id,该方法将返回true
正如我前面提到的,正确地给出了相应的表名和列名