Android:如何创建从数据库进行身份验证的登录页面

标签 android database android-widget

我有3个java文件 i)DBAdapter.java ii) 注册.java iii) 登录.java 四一是菜单,这里不必提及。

现在我想在用户进入登录页面并在编辑 View 中输入用户名和密码时执行此操作,检查数据库中的数据,如果找到匹配则重定向到菜单。 我不知道该怎么做,这是我的 DBAdapter.java 和 login.java 代码文件

DBAdapter.java

public class DBAdapter 
{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_FIRSTNAME = "FirstName";
    public static final String KEY_LASTNAME = "LastName";
    public static final String KEY_USERNAME = "UserName";
    public static final String KEY_PASSWORD = "Password";    
    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "master";
    private static final String DATABASE_TABLE = "register";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
        "create table titles (_id integer primary key autoincrement, "
        + "FirstName text not null, LastName text not null, " 
        + "UserName text not null, Password text not null);";

    private final Context context; 

    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper 
    {
        DatabaseHelper(Context context) 
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) 
        {
            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, 
        int newVersion) 
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion 
                    + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }

登录.java

public class login extends Activity {

    private EditText username;
    private EditText password;

    public String user_name;
    public String pass_word;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        username = (EditText) findViewById(R.id.ev_unameLogin);
        password = (EditText) findViewById(R.id.ev_passwordLogin);

        final Button button = (Button) findViewById(R.id.btn_login);
        button.setOnClickListener(new View.OnClickListener() {           
            public void onClick(View v) {              

                user_name = username.getText().toString();
                pass_word = password.getText().toString();

                Intent goToNextActivity = new Intent(getApplicationContext(), menu.class);
                startActivity(goToNextActivity);


            }
        });                 


    }
}

那么我应该在这两个文件中更新什么..

提前非常感谢

最佳答案

在数据库类中,您需要创建一个访问数据库的方法,例如。

public boolean validateUser(String username, String password){
   Cursor c = getReadableDatabase().rawQuery(
            "SELECT * FROM " + TABLE_NAME + " WHERE "
                    + USER_NAME + "='" + username +"'AND "+PASSWORD+"='"+password+"'" ,  null);
   if (c.getCount>0)
      return true;
      return false;
}

您当然需要使用类似的内容创建数据库表

public void createTable(SQLiteDatabase database) {
    String creationString = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME
            + " ( _id INTEGER PRIMARY KEY AUTOINCREMENT, "
            + USER_NAME + " TEXT NOT NULL, "
            + PASSWORD + " TEXT NOT NULL, "
           ");";
    database.execSQL(creationString);
}

并具有诸如 TABLE_NAME 之类的变量,这显然是您要为表指定的名称,USER_NAME 表示用户名列的名称,PASSWORD 也是如此。

您需要在数据库的onCreate中调用createTable()方法。

要通过登录按钮使用数据库,您可以执行以下操作:

if (myDatabase.vaidateUser(user_name,pass_word)) {
    Intent goToNextActivity = new Intent(getApplicationContext(), menu.class);
    startActivity(goToNextActivity);

}
else
   Toast.makeText(mContext, "Wrong username/password", Toast.LENGTH_LONG).show();

希望这有帮助。我已经给了你一个良好的起点。还有一些其他的东西您需要自己解决,但这应该让您很好地了解它是如何工作的以及下一步该去哪里(例如将记录添加到数据库等)。您将需要创建一些变量等,但这并不困难!

关于Android:如何创建从数据库进行身份验证的登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139750/

相关文章:

MySQL 触发器采用文本变量

android - DispatchingActivityInjector 返回 null

Android SeekBar 设置进度值

android - 适用的免费版本是否支持 adMob 或 ChartBoost 广告?

python - Cassandra 十进制精度问题

android - 是否可以通过编程方式调整小部件内 TextView 的大小?

android - 如何检索存储在 sqlite 中的日期并将其转换为 timeStamp 以便能够将其与当前日期进行比较?

sql - 为引用特定结果的用户设计数据库表

android - Android 中的 ExpandabeListView 不支持 ChildClickListener

android - Android 小部件有任何 "onCreate"方法吗?