if语句或查询中出错

时间:2015-08-25 19:58:16

标签: java android sqlite

所有我想知道的是天气我的问题存在于我的“if”声明或我的查询中...如果你想要慷慨并且帮助我更多,那将是值得赞赏但作为一个初学者我觉得它很好让我为自己拍摄麻烦。

我的问题是,无论我在editText框中输入什么值,结果都会返回true(将我带到我的应用程序的下一个屏幕)。除非我把它留空,然后它正在做它应该显示的文字说“你没有输入密码”可以有人请告诉我我的问题在哪里?

public void buttonWork() {
        button_credCheck.setOnClickListener(new View.OnClickListener() {

        @Override
       public void onClick(View v) {
        Integer rpq = regPwdQuery();
            String isEnteredStr = editText_pwdInput.getText().toString();
            if (TextUtils.isEmpty(isEnteredStr)) {
                Toast.makeText(LogInActivity.this, "You did not enter a password!", Toast.LENGTH_LONG).show();
            }
            else if
                (rpq.equals(1)) {
                Intent myIntent = new Intent(LogInActivity.this, FindInfoActivity.class);
                startActivity(myIntent);
            }
            else {
                Toast.makeText(LogInActivity.this, "Incorrect Password", Toast.LENGTH_LONG).show();
            }
        }
    });
}

public Integer regPwdQuery() {
    int count = 0;
    String regPwdData = editText_pwdInput.getText.toString();
    String regQuery = "SELECT COUNT(*) AS COUNT FROM UsrPass_table WHERE Pwrd ='" + regPwdData + "'";
    SQLiteDatabase uDB = usrDB.getReadableDatabase();
    Cursor cursor = uDB.rawQuery(regQuery, null);
    while (cursor.moveToNext()){
       count = cursor.getCount();
    }
    cursor.close();
    return count;
}

编辑: 我已经尝试更改我的其他如果:rpq.equals(2),因为我被告知getCount将始终返回1.这导致所有密码(甚至正确的,验证存在于DB中)被阻止说不正确的密码..所以,如果我留下我的if语句检查1然后它不会阻止不正确的密码,如果我设置我的if语句检查2然后它阻止一切..我的假设是错误在我的查询某处...也许我需要一种方法来添加1到“cnt”如果查询返回true ...我尝试在我的regPwdQuery的几个不同的地方添加一个cnt ++,但没有运气..谁能帮助我?

4 个答案:

答案 0 :(得分:1)

您正在尝试使用数据库检查密码,同时设置点击监听器不在onclick功能内! 移动

String rpq = regPwdQuery().toString();   

里面的onclick功能。

正如@Blackbelt指出的那样,在regPwdQuery()中使用

从edittext获取文本
editText_pwdInput.getText().toString().

旁注:

只要你没有向数据库写任何内容,

就可以获得可读数据库。

直接比较整数是不是更好。我不明白为什么需要将它转换为字符串进行比较。你可以

替换

rpq.equals("1")

if (regPwdQuery() == 1) 

Db未关闭。检查是否有意。

在查询中删除AS COUNT,因为您没有按查询进行任何分组。

错误的假设taht getCount默认返回1。如果没有记录匹配,则给出0。因为你总是得到1,所以无论如何,你总是有一个记录匹配。

这一条记录是由count作为其值的记录。所以你需要查询它来计算。 (如果你的计数是0,你也有一个光标记录给出结果为0)

最后请尝试以下代码。而不是

count = cursor.getCount();

你能尝试一下吗?

count= cursor.getInt(0);

答案 1 :(得分:1)

是因为在onClick中您要检查rpq而不是isEnteredStr的值吗? (您正在检查isEnteredStr以查看它是否包含任何内容,但在检查值时不会)

答案 2 :(得分:0)

在检查输入的字符串是否为空之后,在onClikc方法中调用regPwdQuery方法,在那里实现if else逻辑以处理成功或失败。

答案 3 :(得分:-3)

奇怪的是,您要从Integer转换为String,然后检查它是否等于“1”。如果你只是保持整数会更容易。但实际上,试试这个:

else if (riq.equalsIgnoreCase("1")) {
    //your code here
}
相关问题