我创建了一个用户注册&登录应用程序。我做了以下事情。
MainActivity.java
si=(Button)findViewById(R.id.button);
su=(Button)findViewById(R.id.button2);
si.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1=new Intent(MainActivity.this,Login.class);
startActivity(intent1);
}
});
su.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent2=new Intent(MainActivity.this,Signup.class);
startActivity(intent2);
}
});
Signup.java
databaseAdapter=new DatabaseAdapter(this);
databaseAdapter=databaseAdapter.open();
un=(EditText)findViewById(R.id.editText);
pwd=(EditText)findViewById(R.id.editText2);
cnfpwd=(EditText)findViewById(R.id.editText3);
signu=(Button)findViewById(R.id.button3);
signu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String Uname=un.getText().toString();
String passw=pwd.getText().toString();
String cnfpassw=cnfpwd.getText().toString();
if (Uname.equals("")||passw.equals("")||cnfpassw.equals("")){
//Toast.makeText(getApplicationContext(),"Please Fill all the Fields",Toast.LENGTH_SHORT).show();
show("Error","Please fill all the fields");
return;
}
if(!passw.equals(cnfpassw)){
//Toast.makeText(getApplicationContext(),"Password does not match",Toast.LENGTH_SHORT).show();
show("Error","Password does not match");
pwd.setText("");
cnfpwd.setText("");
return;
} else {
databaseAdapter.insertEntry(Uname,passw);
//Toast.makeText(getApplicationContext(),"Account Created Successfully",Toast.LENGTH_LONG).show();
show("Success", "Account Created Successfully");
//finish();
un.setText("");
pwd.setText("");
cnfpwd.setText("");
}
}
});
}
private void show(String title, String message) {
AlertDialog.Builder builder=new AlertDialog.Builder(Signup.this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
Login.java
databaseAdapter=new DatabaseAdapter(this);
databaseAdapter=databaseAdapter.open();
UN=(EditText)findViewById(R.id.editText4);
PWD=(EditText)findViewById(R.id.editText5);
si=(Button)findViewById(R.id.button4);
si.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String UserName=UN.getText().toString();
String Password=PWD.getText().toString();
String storedPassword=databaseAdapter.getSingleEntry(UserName);
//String storesUserName=databaseAdapter.getUserName(Password);
if (UserName.equals("")||Password.equals("")){
show("Error","Please fill all Fields");
return;
}
if (Password.equals(storedPassword)){
//Toast.makeText(Login.this,"Login Successful",Toast.LENGTH_SHORT).show();
show("Success","Login Successful");
String storedUserName=databaseAdapter.getUserDetails(Password);
Toast.makeText(getApplicationContext(),storedUserName,Toast.LENGTH_SHORT).show();
Bundle bundle=new Bundle();
bundle.putString("number",storedUserName);
Intent intent2=new Intent(Login.this,Inbox.class);
intent2.putExtras(bundle);
startActivity(intent2);
} else {
//Toast.makeText(getApplicationContext(),"Username or Password is incorrect",Toast.LENGTH_SHORT).show();
show("Error","Username or Password is incorrect");
UN.setText("");
PWD.setText("");
}
}
});
}
private void show(String title, String message) {
AlertDialog.Builder builder=new AlertDialog.Builder(Login.this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
现在我可以注册并从数据库登录。但Database
允许冗余。即,它允许任意次数的相同值。我想避免这种情况,以便注册唯一的用户名。任何解决方案?
答案 0 :(得分:0)
我在这里只是给你一个想法,它是我在项目中使用的代码示例,您可以按照自己的方式进行更改,以下是如何查看数据是否已经存在的情况。如果带有标题的数据在数据库中,则此方法将返回true。
plot1 = new QWidget;
auto plot2 = std::unique_ptr<QWidget>(new QWidget);
gridLayout = new QGridLayout(gridLayoutWidget);
...
gridLayout->addWidget(plot1, 1, 1, 1, 1);
gridLayout->addWidget(plot2.release(), 1, 2, 1, 1);
希望有所帮助
答案 1 :(得分:0)
public boolean isUserExists(String username) {
boolean isdataAvail = false;
SQLiteDatabase db = null;
Cursor cursor = null;
String query = "SELECT * FROM <table_name> WHERE user_name = "+ username;
db = YourDbHelper.getInstance().getReadableDatabase();
if(db.isOpen())
{
cursor = db.rawQuery(query, null);
try {
if( cursor.getCount() > 0){
isdataAvail = true;
}
} catch (Exception e) {
} finally {
if (db != null) {
if (db.isOpen()) {
db.close();
cursor.close();
}
}
}
}
return isdataAvail;
}
如果数据可用,则此方法返回 true ,然后在DB中找到具有给定名称的记录。