验证用户名唯一获取错误

时间:2013-05-19 06:48:35

标签: java android boolean

我想验证用户名是否已经存在,所以代码如下所示,我将此代码放在 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 errors

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

修改 我的代码如下所示,问题解决了:

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

但它无法验证用户我是不是真或假,任何想法?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

SignUPActivity的第87行存在NullPointerException。这就是崩溃的原因。你应该检查一下这行。