【问题标题】:how to get edittext values to be compared with database values in dialog box如何在对话框中获取要与数据库值进行比较的edittext值
【发布时间】:2013-03-26 06:13:07
【问题描述】:

我有一个对话框,要求用户提供登录凭据。我想将该密码与之前存储用于身份验证的数据库值进行比较。 M 做不到。 任何人都可以帮忙。

public void onClick(View v) {
    // TODO Auto-generated method stu
    Toast.makeText(context, "Button Clicked", Toast.LENGTH_SHORT).show();   
    String existPin=exist_pin.getText().toString();
    String confirmPin=new String();
    prefEditor.putString("ExistPin", existPin);
    prefEditor.commit();
    WayDataBase way=new WayDataBase(LoginActivity.this);
    String storedPin=way.getPin(confirmPin);
    Toast.makeText(context, "Data from database", Toast.LENGTH_SHORT).show();
    if(existPin.equals(storedPin))
    {
        d2.dismiss();
        Intent i=new Intent(getApplicationContext(),ApplicantPage1.class);
        startActivity(i);
    }
    else
    {
        Toast.makeText(context, "Invalid credentials", Toast.LENGTH_SHORT).show();
    }
}

【问题讨论】:

  • 你有什么错误吗?
  • 你能从数据库中获取 StoredPin 吗? if-else 中的哪一部分总是被执行?你有什么错误吗?
  • 什么是String confirmPin=new String();
  • 顺便说一句,最好不要将 PIN 或密码作为明文存储在数据库中,您应该存储 PIN 的加密哈希值。否则,任何人都可以通过从电话中获取数据库来进入。此外,较新的 Android 具有用户帐户和身份验证,为什么不使用呢?
  • 请定义“M 不能这样做”。您面临的问题是什么?

标签: android database dialog android-edittext


【解决方案1】:

最好在数据库中进行比较,只需在 getPin 函数中的参数中传递输入的 pin 并检查并返回布尔值而不是字符串,如下所示:

public boolean isValidPin(String pin) {// within database.

        boolean type = false;

        Cursor c = myDataBase.rawQuery(
                "select * from table where user_pin='" + pin+ "'", null);
        if (c.getCount() > 0) {
            c.moveToFirst();
            type = true;
        }

        c.close();

        return type;

    }

从盒子中获取引脚并传递给函数,然后放置条件并检查布尔值。

String pin=exist_pin.getText().toString();
boolean flag=isValidPin(String pin);


 if(flag)
    {
        d2.dismiss();
        Intent i=new Intent(getApplicationContext(),ApplicantPage1.class);
        startActivity(i);
    }
    else
    {
        Toast.makeText(context, "Invalid credentials", Toast.LENGTH_SHORT).show();
    }

【讨论】:

  • myDataBase.rawQuery 我在这一行和 `boolean flag=isValidPin(String piN);' 中遇到错误这行也是
  • The method rawQuery(String, null) is undefined for the type String
  • final Dialog d2=new Dialog(LoginActivity.this); d2.setContentView(R.layout.existing_user); d2.setTitle("Enter your Pin"); final EditText exist_pin=(EditText)d2.findViewById(R.id.existing); final EditText invi=(EditText)d2.findViewById(R.id.editText1); Button exist_submit_pin=(Button)d2.findViewById(R.id.exist_submit); exist_submit_pin.setOnClickListener(new View.OnClickListener() { 此代码创建对话框让我知道是否有任何问题@RobinHood
  • 错误已修复,为什么点击exist_submit_pin后却意外关闭
  • 03-26 07:12:12.141: E/AndroidRuntime(7719): FATAL EXCEPTION: main 03-26 07:12:12.141: E/AndroidRuntime(7719): java.lang.NullPointerException 03-26 07:12:12.141: E/AndroidRuntime(7719): at com.android.lnt_form.WayDataBase.isValidPin(WayDataBase.java:147) 03-26 07:12:12.141: E/AndroidRuntime(7719): at com.android.lnt_form.LoginActivity$3.onClick(LoginActivity.java:133) 03-26 07:12:12.141: E/AndroidRuntime(7719): at android.view.View.performClick(View.java:4202) 03-26 07:12:12.141: E/AndroidRuntime(7719): at android.view.View$PerformClick.run(View.java:17340)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
相关资源
最近更新 更多