2013-05-19 29 views
0

我想驗證用戶名是否已經存在或沒有,所以代碼如下所示,我把這段代碼放在保護無效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; 
    } 

,我要覈對一下,當用戶點擊註冊按鈕,所以把在公共無效的onClick(視圖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; 
       } 

,但它無法驗證用戶無論是我把真的還是假的,任何想法:當我的代碼如下

編輯 問題解決了嗎?

+3

你初始化DB數據庫? – stinepike

+0

yes .. public SQLiteDatabase db; – user2301281

+0

SQLiteDatabase db = this.getWritableDatabase();.像這樣的初始化 – Raghunandan

回答

2

SignUPActivity的第87行有一個NullPointerException。這是造成這次事故的原因。你應該檢查這一行是什麼。

+0

in line 87 is Cursor c = db.rawQuery(「SELECT COUNT(*)FROM」+「LOGIN」+「WHERE」+「USERNAME」+ 「=?」,new String [] {_username}); 但我不知道什麼是錯誤,我的表名是LOGIN – user2301281

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

+0

謝謝,但是在我初始化SQLiteDatabase之後,一切順利,現在的問題是我可以驗證用戶名不是真或假。 – user2301281

+0

這就是爲什麼有一個空檢查,如果萬一你失去了連接。此檢查爲您提供第二次重新初始化連接的機會。如果應用程序工作正常並不能確保事情正確,因爲可能連接沒有建立,因爲你沒有執行連接操作,所以東西行爲正確。 – 2013-05-19 09:47:29

+0

我明白了,謝謝。^^ – user2301281