4

ユーザー名とパスワードを取得する必要があります...アプリケーションでパスワードの回復を行っているため、DBのコードは次のとおりです。

public String getEmailAddr() throws SQLException {
    Cursor mCursor = db.rawQuery(
        "SELECT Username, Passwords FROM " + 
        USERS_TABLE + " WHERE EmailNO=?",null);

    if (mCursor != null) {           

        if(mCursor.getCount() > 0 {
            //return obj1.getpassword();
        }
    }

    //return false;
    return obj1.getpassword();
}

また、ユーザーが電子メール アドレスを入力すると、最初に存在を確認し、電子メールを送信するためのアクティビティ コードを使用してパスワードとユーザー名を返す必要があります。

public void onClick(View v) {
    String EmailAddress = txtEmailAddress.getText().toString();
    try {
        if(EmailAddress.length() > 0) {
            DBAdapter  dbUser = new DBAdapter (RecoverPassword.this);
            dbUser.open();

            if(dbUser.getEmailAddress(EmailAddress)) {
                Toast.makeText(RecoverPassword.this,
                    "Email Successfully ", 
                    Toast.LENGTH_LONG).show();
                    Toast.makeText String to = 
                        txtEmailAddress.getText().toString();
                    //String subject = EmailAddress.getText().toString();
                    // String message = EmailAddress.getText().toString();
                    Intent email = new Intent(Intent.ACTION_SEND);
                    email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
                    email.putExtra(Intent.EXTRA_SUBJECT, "Password Recovery");
                    email.putExtra(Intent.EXTRA_TEXT, dbUser.getEmailAddr());
                    //need this to prompts email client only 
                    email.setType("message/rfc822");
                    startActivity(Intent.createChooser(email, "gmail :"));                 
                }

                else {
                    Toast.makeText(RecoverPassword.this,
                        "Invalid Email", Toast.LENGTH_LONG).show();
                    txtEmailAddress.setText("");
                }

                dbUser.close();
            }
        }

        catch(Exception e) {
            Toast.makeText(RecoverPassword.
            this,e.getMessage(), Toast.LENGTH_LONG).show();
        }

        Please help me to check what is wrong...but there is no error but it cant return 
        username and password to the email sent
4

2 に答える 2

3

私はあなたのコードから混乱していますが、データを取得したいときCursor

String[] whereArgs = new String[<data>];
    Cursor mCursor = db.rawQuery("SELECT Username, Passwords FROM " + USERS_TABLE + " WHERE EmailNO = ?", whereArgs);
    mCursor.moToFirst();

    if(mCursor.getCount() > 0} {
       String userName = mCursor.getString(0);
       String password = mCursor.getString(1);

    }

データベースからデータを返すインスタンスをgetters提供するものを使用する必要があります。Cursor

編集:

whereArgs を使用していることに気付いていないので、句を使用する場合は、 ?の代わりに置き換えられるデータが含まWHEREれているため、特定の whereArgs を指定する必要があります。文字。String[]

データベースを閉じるには、次を使用できます。

@Override
protected void onDestroy() {
    super.onDestroy();
    if (yourDatabase != null) {
        yourDatabase.close();
    }
}

または、データベースを開く各作業の後、データベースを作成する必要がありますclose()

于 2012-05-30T09:33:25.707 に答える
1

Cursor mCursor = db.rawQuery("SELECT Username, Passwords FROM " + USERS_TABLE + " WHERE
EmailNO=?",null);

EmailNO の値を指定していません。の代わりに値を入れますnull

編集:あなたのコードは次のようになるべきだと思います:

public boolean getEmailAddress(String emailNo) 
    throws SQLException { //pass the EmailNo which you want in where clause
    Cursor mCursor = db.rawQuery(
        "SELECT Username, Passwords FROM sddashsd WHERE 
        EmailNO='"+emailNo+"'",null);

        if (mCursor != null) {         
            if(mCursor.getCount() > 0)
                return true;
        else 
            return false;
        }
    }

ここでコードを編集します。

public void onClick(View v) {
    String EmailAddress = 
        txtEmailAddress.getText().toString();

    try {
        if(EmailAddress.length() > 0) {
            DBAdapter  dbUser = new DBAdapter (RecoverPassword.this);
            dbUser.open();

            if(dbUser.getEmailAddress(EmailAddress)) {
                Toast.makeText(RecoverPassword.this,
                    "Email Successfully ", Toast.LENGTH_LONG).show();
                String to = txtEmailAddress.getText().toString();
                //String subject = EmailAddress.getText().toString();
                // String message = EmailAddress.getText().toString();
                Intent email = new Intent(Intent.ACTION_SEND);
                email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
                email.putExtra(Intent.EXTRA_SUBJECT, "Password Recovery");
                email.putExtra(Intent.EXTRA_TEXT, dbUser.getEmailAddr());
                //need this to prompts email client only
                email.setType("message/rfc822");
                startActivity(Intent.createChooser(email, "gmail"));
            }

            else {
                Toast.makeText(RecoverPassword.this,"Invalid Email", 
                    Toast.LENGTH_LONG).show();                             
                    txtEmailAddress.setText("");
            }

        }

    }

    catch(Exception e) {
        Toast.makeText(RecoverPassword.this,
            e.getMessage(), Toast.LENGTH_LONG).show();
    }

    finally {
        dbUser.close();  
    }
于 2012-05-30T09:34:35.500 に答える