2014-02-20 22 views
0

我有一個與我的應用程序的SQLite登錄正在進行的問題。我有一個簡單的DBHandler類創建了一個數據庫,在數據庫中我存儲了一個用戶:用戶名:test密碼:1234簡單的Android應用程序SQLite登錄

我也有一個LogInScreen類來處理登錄視圖,驗證登錄的方法。

我希望用戶輸入他們的登錄詳細信息到文本字段中,當他們按登錄按鈕來驗證我的數據庫。正如你在附圖中看到的那樣。

enter image description here

我已經存儲了用戶名,這是我的代碼

代碼的工作,但你可以在LogInScreen類看它是不是檢查,對我的數據庫,但實際的文本字段。不幸的是,我對SQLite和編程完全陌生,所以我無法弄清楚。任何幫助將不勝感激:)

package com.C05025.noughtsandcrosses; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DBHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "userDB.db"; 
private static final String TABLE_USERS = "users"; 

public static final String COLUMN_NAME = "name"; 
public static final String COLUMN_PASSWORD = "password"; 

public DBHandler(Context context, String name, CursorFactory factory, 
     int version) { 
    //super(context, name, factory, version); 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USERS + "(" 
       + " INTEGER PRIMARY KEY," + COLUMN_NAME + " TEXT," 
       + COLUMN_PASSWORD + " INTEGER" + ")"; 
      db.execSQL(CREATE_USER_TABLE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
    // TODO Auto-generated method stub 

} 

public void addUser(LogIn user) { 

    ContentValues values = new ContentValues(); 
    values.put(COLUMN_NAME, user.getName()); 
    values.put(COLUMN_PASSWORD, user.getPassword()); 

    SQLiteDatabase db = this.getWritableDatabase(); 

    db.insert(TABLE_USERS, null, values); 
    db.close(); 
} 

public LogIn findUser(String Username) { 
    String query = "Select * FROM " + TABLE_USERS + " WHERE " + COLUMN_NAME + " = \"" + 
     Username + "\""; 

    SQLiteDatabase db = this.getWritableDatabase(); 

    Cursor cursor = db.rawQuery(query, null); 

    LogIn User = new LogIn(); 

    if (cursor.moveToFirst()) { 
     cursor.moveToFirst(); 
     User.setName(cursor.getString(1)); 
     User.setPassword(Integer.parseInt(cursor.getString(2))); 
     cursor.close(); 
    } else { 
     User = null; 
    } 
    db.close(); 
    return User; 
} 


} 

LoginScreen類:

package com.C05025.noughtsandcrosses; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.Intent; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.EditText; 
    import android.widget.Toast; 

    public class LogInScreen extends Activity { 
EditText txtUsername; 
EditText txtPassword; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.loginscreen); 
    txtUsername = (EditText) findViewById(R.id.EditUsername); 
    txtPassword = (EditText) findViewById(R.id.EditPassword); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

public void newLogIn(View view) { 

    if(txtUsername.getText().toString().equals("test") && 
      txtPassword.getText().toString().equals("1234")){ 
     Intent i = new Intent(LogInScreen.this, MainMenu.class); 
     startActivity(i);    
     LogInScreen.this.finish(); 
      } 
    else{ 
     Toast.makeText(getApplicationContext(), "Wrong Credentials", 
        Toast.LENGTH_SHORT).show(); 
      } 

        }  
      } 
+2

請不要重複您自己的問題,並盡力而爲。 – Merlevede

+0

我對這個地方完全陌生,我試圖刪除我的另一個問題,但它不會讓,我試圖讓我的問題在這篇文章中更清晰一點,我不想惹惱任何人:) –

回答

0

即使我真的不明白的問題,我很樂意看到的堆棧跟蹤,this是一個美妙的指南您可以使用如何使用SQLite,MySQL和PHP向您的應用程序添加登錄和註冊。