java - 将输入数据与另一个表进行比较
问题描述
我正在开发的应用程序中有一个注册选项,为了验证谁可以注册,我创建了另一个名为 ORDER 的表。
此表 Order 有两个字段(名称和编号)。
Sign Up 已连接到表 USERS,我想将 Sign Up 上插入的名称和号码与表 ORDER 中插入的数据进行比较。
例如:
注册用户名:test 密码:test 名称:用户测试号:12345
订单:名称:用户测试编号:12345
如果名称和号码在表 ORDER 中,它只能在表 USER 中注册注册信息。
你能帮助我吗?
FirebaseDatabase database;
DatabaseReference Users, Order;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = FirebaseDatabase.getInstance();
Users = database.getReference("Users");
Order = database.getReference("Order");
edtUser =(MaterialEditText) findViewById(R.id.edtUserName);
edtPassword =(MaterialEditText)findViewById(R.id.edtPassword);
btnSignIn= (Button)findViewById(R.id.btn_sign_in);
btnSignUp= (Button)findViewById(R.id.btn_sign_up);
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showSignUpDiaolog();
}
});
btnSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signIn(edtUser.getText().toString(),edtPassword.getText().toString());
}
});
}
private void signIn(final String user, final String pwd) {
Users.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child(user).exists())
{
if(!user.isEmpty())
{
User login = dataSnapshot.child(user).getValue(User.class);
if (login.getPassword().equals(pwd))
{
Intent homeActivity = new Intent(MainActivity.this,Home.class);
Common.currentUser = login;
startActivity(homeActivity);
finish();
}
else
{
Toast.makeText(MainActivity.this, "Password errada!", Toast.LENGTH_SHORT).show();
}}
else
{
Toast.makeText(MainActivity.this, "Introduza o utilizador!", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(MainActivity.this, "Utilizador não existe!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void showSignUpDiaolog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("Criação da conta:");
alertDialog.setMessage("Preencher todos os campos!");
LayoutInflater inflater = this.getLayoutInflater();
View sign_up_layout = inflater.inflate(R.layout.sign_up_layout,null);
edtNewUser = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewUserName);
edtNewPassword = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewPassword);
edtNewOrdem = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewOrdem);
edtNewName = (MaterialEditText)sign_up_layout.findViewById(R.id.edtNewName);
alertDialog.setView(sign_up_layout);
alertDialog.setIcon(R.drawable.ic_account_circle_black_24dp);
alertDialog.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
alertDialog.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
final User user = new User (
edtNewUser.getText().toString(),
edtNewPassword.getText().toString(),
edtNewOrdem.getText().toString(),
edtNewName.getText().toString());
Users.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
String passwordvalid = edtNewPassword.getText().toString();
String usernamevalid = edtNewUser.getText().toString();
if (TextUtils.isEmpty(passwordvalid))
{
Toast.makeText(MainActivity.this, "Password não definida.", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(usernamevalid))
{
Toast.makeText(MainActivity.this, "Utilizador não definido.", Toast.LENGTH_SHORT).show();
return;
}
if (passwordvalid.length() < 8)
{
Toast.makeText(MainActivity.this, "Password tem que conter no mínimo 8 caracteres.", Toast.LENGTH_SHORT).show();
return;
}
if(dataSnapshot.child(user.getUserName()).exists())
Toast.makeText(MainActivity.this, "Utilizador já registado!", Toast.LENGTH_SHORT).show();
else
{
Users.child(user.getUserName())
.setValue(user);
Toast.makeText(MainActivity.this, "Registo efetuado!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
dialogInterface.dismiss();
}
});
alertDialog.show();
}
}
解决方案
如您所见,我想检查用户名和名称是否已在订单表上注册。如果不是,则无法在用户表上注册。如果他们是,则信息记录在用户表上并创建帐户。
我有一个可以在应用程序上注册的人员列表,我想用这两个字段进行控制。
推荐阅读
- microsoft-graph-api - 如何撤消 Outlook 任务完成?
- citrus-framework - Citrus-Framework - 自定义操作的参数处理
- javascript - HTML5 Canvas JS 发布问题。不能在服务器上工作
- php - 如何从 cron 运行 PHP 脚本以解析具有保护(域名检查)的站点?如何从此域名在 cron 中运行 PHP 脚本?
- javascript - 发生碰撞碰撞时数组拼接中的多个对象
- python - Python:使用 Tkinter(ttk) 构建一个简单的表单
- java - 如何检查数组是否包含一次部分值?
- php - 如何强制浏览器从服务器而不是从缓存加载 html 和 css 页面?
- css - 多重过滤器过渡
- excel - 在运行时打开文本文件以进行手动编辑