2015-02-23 91 views
0

我想提出一個Android應用程序,和ATM我不知道如果在創建我的數據庫我已經檢查了我的logcat的,我沒有看到任何跡象,如果我registeration已經加入,但它顯示的「成功註冊」Android SQL:如何檢查現有用戶?

敬酒

我檢查了DDMS文件資源管理器,它不顯示數據庫,但我讀了一些可能不會顯示它,但無論如何我想檢查它是否通過添加檢查現有的用戶名添加。

回答

0

假設用戶名是獨一無二的,你需要查詢用戶行你想獲得其用戶名等於用戶名:

public boolean exits(String username){ 
    boolean exists=false; 
    SQLiteDatabase db = this.getReradableDatabase(); 

    Cursor cursor=db.rawQuery("SELECT * FROM "+help.TABLE_NAME+" WHERE "+help.COLUMN_USERNAME+" ='"+username+"' ;"; 

    if(cursor!=null && cursor.getCount()>0) exists=true; 
    cursor.close(); 
    db.close(); 

    return exists; 
} 

好,所以爲了檢查用戶是否不存在並註冊它,你需要做以下到您的onClick方法:

if (!password.equals(confirm)) { 

    Toast.makeText(getApplicationContext(), "Password does not match", Toast.LENGTH_LONG).show(); 
     return; 
} 
else if (handler.exists(name)){ 
Toast.makeText(getApplicationContext(), "User exists", Toast.LENGTH_LONG).show(); 

return; 
} 
else { 

    handler.addUser(name, username, password); 
    Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); 
    finish(); 
} 
0

你需要調用rawQuery數據庫與特定的用戶名來獲取行:

public boolean exists(String username){ 
    Cursor c = db.rawQuery(String.format("SELECT %s FROM %s WHERE %s = ? LIMIT 1", 
      help.COLUMN_NAME, help.TABLE_NAME, help.COLUMN_NAME), 
      new String[] { username }); 

    return c.moveToFirst(); 
} 

如果存在這樣的名稱的用戶,將返回true,否則返回false。

迴應您的評論:

... 
else if (handler.exists(username)) { 
    Toast.makeText(getApplicationContext(), "This username already taken", Toast.LENGTH_LONG).show(); 
    return; 
} else { 
    handler.addUser(name, username, password); 
    Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); 
    finish(); 
} 
+0

從原材料查詢,當例如在registertation用戶名文本字段「學生」的用戶類型和填充表格的其餘部分,當用戶點擊克里特帳戶按鈕。我如何在registration.java中實現這個功能,以比較 – user24343 2015-02-23 16:40:14

+0

@LearnFred只需添加另一個「else if」塊。用一個例子更新我的答案。 – Simas 2015-02-23 16:43:05

+0

感謝看原始查詢有一個錯誤,得到這個錯誤: 引起:android.database.sqlite.SQLiteException:接近「1」:語法錯誤(代碼1):,編譯時:SELECT TOP 1名稱來自用戶名稱=? – user24343 2015-02-23 16:47:28

0
public boolean isRecordExist(String value) { 
     boolean exist = false; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     String sql = "select * from " + TABLE_NAME; 
     if (value != null) { 
      sql = sql + " where <coloumn_name> = '" + value + "'"; 
     } 
     Cursor c = db.rawQuery(sql, null); 
     if (c != null) { 
      if (c.getCount() > 0) 
       exist = true; 
     } 
     c.close(); 
     db.close(); 
     return exist; 

    } 
相關問題