我有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/