0

我想验证用户名是否已经存在,所以代码如下,我把这段代码放在protected void onCreate(Bundle savedInstanceState){//把这段代码放在这里,对吗?}

public boolean verification(String _username) {
        Cursor c = db.rawQuery( "SELECT COUNT(*) FROM " + "LOGIN" + " WHERE " + "USERNAME" + " = ?", new String[] {_username});
        boolean exists = c.moveToFirst();
        c.close();
        return exists;
    }

我想在用户单击注册按钮时检查这一点,所以将如下所示的代码放在public void onClick(View v) {//把这段代码放在这里,对吗?}

// check if user is exists?         
            if(verification(userName) == true){
                Toast.makeText(getApplicationContext(), "Username already exists", Toast.LENGTH_LONG).show();
                return;
                }

当我运行应用程序时单击注册按钮,应用程序被强制关闭。我得到如图所示的logcat: logcat 错误

任何想法?或者如何确保用户名是唯一的?对不起,我还是个新手。

编辑 当我的代码如下时问题​​解决:

if(loginDataBaseAdapter.verification(userName) == false){
                Toast.makeText(getApplicationContext(), "Username already exists", Toast.LENGTH_LONG).show();
                return;
                }

但它无法验证用户,无论我输入真假,知道吗?

4

2 回答 2

3

这是一个 NPE 案例,由第 87 行引起。正如您在上面提到的,您的第 87 行是

Cursor c = db.rawQuery( "SELECT COUNT(*) FROM " + "LOGIN" + " WHERE " + "USERNAME" + " = ?", new String[] {_username});

所以这个异常发生是因为你试图对一个引用进行操作null。这里的变量是db

您应该在执行查询之前进行空检查:

if(null == db){
// Initialize your db
}

此外,以下链接可以帮助您了解 android http://www.vogella.com/articles/AndroidSQLite/article.html中的数据库

于 2013-05-19T07:17:43.000 回答
2

SignUPActivity 的第 87 行有一个 NullPointerException。这就是崩溃的原因。您应该检查此行中的内容。

于 2013-05-19T06:55:27.200 回答