Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要有关阅读SQLite登录电子邮件的帮助_Java_Android_Database_Sqlite_Android Studio - Fatal编程技术网

Java 我需要有关阅读SQLite登录电子邮件的帮助

Java 我需要有关阅读SQLite登录电子邮件的帮助,java,android,database,sqlite,android-studio,Java,Android,Database,Sqlite,Android Studio,我希望“欢迎活动”中的文本视图能够捕获登录活动中输入的电子邮件 我想为我尝试输入的每个用户检索,现在我只能检索上次注册的用户电子邮件,无论我与其他用户登录,你知道如何做吗 我有一个WelcomeActivity和一个SignenActivity,我想做的是WelcomeActivity有一个TextView,我想让TextView从SQLiteHelper读取,当我使用保存在数据库中的电子邮件和密码登录时,它应该读取用于使用SignenActivity登录的选定电子邮件,使用EditText中的

我希望“欢迎活动”中的文本视图能够捕获登录活动中输入的电子邮件

我想为我尝试输入的每个用户检索,现在我只能检索上次注册的用户电子邮件,无论我与其他用户登录,你知道如何做吗

我有一个
WelcomeActivity
和一个
SignenActivity
,我想做的是WelcomeActivity有一个TextView,我想让TextView从SQLiteHelper读取,当我使用保存在数据库中的电子邮件和密码登录时,它应该读取用于使用SignenActivity登录的选定电子邮件,使用EditText中的putExtra和getExtra发送电子邮件并通过TextView获取是很容易的,但我希望用户是唯一的,我不希望用户进入只显示名称的页面,如果我检索检索到用于登录的电子邮件,这将更合理

DataBAseHelper.java

public class DataBaseHelper extends SQLiteOpenHelper
{    
    public static final String DB_NAME = "users.dbHelper";
    public static final int DB_VERSION = 1;
    public static final String TABLE_USERS = "users";
    public static final String COLUMN_EMAIL = "email";
    public static final String COLUMN_PASSWORD = "password";
    public static final String[] ALL_COLUMNS = {COLUMN_EMAIL, COLUMN_PASSWORD};
    public DataBaseHelper dbHelper;
    public static SQLiteDatabase SQLiteDatabase;

    public static final String SQL_CREATE =
            "CREATE TABLE IF NOT EXISTS " + TABLE_USERS + " (" +
                    COLUMN_EMAIL + " STRING PRIMARY KEY, " +
                    COLUMN_PASSWORD + " STRING);";

    public static final String SQL_DROP = "DROP TABLE " + TABLE_USERS;

    public DataBaseHelper(@Nullable Context context)
    {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(SQL_CREATE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL(SQL_DROP);
        onCreate(db);
    }

    //---opens the database---
    public DataBaseHelper open() throws SQLException
    {

        SQLiteDatabase = this.getWritableDatabase();
        return this;
    }

    //---closes the database---
    public void close()
    {
        if (SQLiteDatabase != null)
            SQLiteDatabase.close();
        if (dbHelper != null)
            dbHelper.close();
    }

    // Checking if email exists
    public boolean checkEmail(String email)
    {
        SQLiteDatabase = this.getWritableDatabase();
        Cursor cursor = SQLiteDatabase.rawQuery("SELECT * FROM " + TABLE_USERS + " WHERE "
                + COLUMN_EMAIL + " =? ", new String[]{email});
        if (cursor.getCount() > 0) return false;
        else return true;
    }

    // Checking the email and password
    public boolean checkEmailPassword(String email, String password)
    {
        SQLiteDatabase = this.getWritableDatabase();
        Cursor cursor = SQLiteDatabase.rawQuery("SELECT * FROM " + TABLE_USERS + " WHERE "
                        + COLUMN_EMAIL + " =? " + " AND " + COLUMN_PASSWORD + " =? "
                , new String[]{email, password});
        if (cursor.getCount() > 0) return true;
        else return false;
    }

    public boolean insertEntry(String email, String password)
    {
        ContentValues newValues = new ContentValues();
        // Assign values for each row.
        newValues.put("EMAIL", email);
        newValues.put("PASSWORD", password);

        // Insert the row into your table
        long ins = SQLiteDatabase.insert(TABLE_USERS, null, newValues);
        ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
        if (ins == -1) return false;
        else return true;
    }

    public int deleteEntry(String email)
    {
        //String id=String.valueOf(ID);
        String where = "EMAIL=?";
        int numberOFEntriesDeleted = SQLiteDatabase.delete(TABLE_USERS, where, new String[]{email});
        // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
        return numberOFEntriesDeleted;
    }

    public String getSingleEntry(String email)
    {
        Cursor cursor = SQLiteDatabase.query(TABLE_USERS, null, " EMAIL=?", new String[]{email}, null, null, null);
        if (cursor.getCount() < 1) // UserName Not Exist
        {
            cursor.close();
            return "NOT EXIST";
        }
        cursor.moveToFirst();
        String password = cursor.getString(cursor.getColumnIndex("PASSWORD"));
        cursor.close();
        return password;
    }

    public void updateEntry(String email, String password)
    {
        // Define the updated row content.
        ContentValues updatedValues = new ContentValues();
        // Assign values for each row.
        updatedValues.put("EMAIL", email);
        updatedValues.put("PASSWORD", password);

        String where = "EMAIL = ?";
        SQLiteDatabase.update(TABLE_USERS, updatedValues, where, new String[]{email});
    }

    public String getUsername(String COLUMN_EMAIL) throws SQLException
    {
        String email = "No Email Found";
        SQLiteDatabase = this.getReadableDatabase();
        Cursor cursor = SQLiteDatabase.query(TABLE_USERS, new String[]{COLUMN_EMAIL}, null, null,
                null, null, null);
        if (cursor.moveToNext()) {
            cursor.moveToNext();
            cursor.moveToLast();

                email = cursor.getString(cursor.getColumnIndex(COLUMN_EMAIL));
        }
        cursor.close();

        return email;    
    }
public class WelcomeActivity extends AppCompatActivity
{

    private static int SPLASH_TIME_OUT = 4000;
    private SQLiteDatabase m_db;
    private TextView tvEmails;
    DataBaseHelper db = new DataBaseHelper(this);

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);    
        db = new DataBaseHelper(this);
        try {
            db = db.open();
        } catch (android.database.SQLException e) {
            e.printStackTrace();
        }

        TextView tvEmail = (TextView) findViewById(R.id.tvEmails);

//        Bundle bundle;
//        bundle = getIntent().getExtras();
//        tvEmail.setText(bundle.getString(""));

        String email = db.getUsername(DataBaseHelper.COLUMN_EMAIL);

        tvEmail.setText(email);

        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                Intent intent = new Intent(WelcomeActivity.this, EthicsActivity.class);
                startActivity(intent);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }
}
public class LoginActivity extends AppCompatActivity
{

    public static final String PREFS = "global_prefs";// UI References
    public static final String KEY_EMAIL = "email";

    private DataBaseHelper db;
    private EditText etEmail, etPassword;
    private Button btnSignIn;
    private TextView tvRegisterClick;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        final EditText etEmail = findViewById(R.id.etEmail);
        final EditText etPassword = findViewById(R.id.etPassword);
        Button btnSignIn = findViewById(R.id.btnSignIn);
        TextView tvRegisterClick = findViewById(R.id.tvRegisterClick);

        db = new DataBaseHelper(this);

        tvRegisterClick.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });

        btnSignIn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // Store values at the same time of the login attempt

                String email = etEmail.getText().toString();
                String password = etPassword.getText().toString();

                boolean checkEmailPassword = db.checkEmailPassword(email, password);
                if (checkEmailPassword) {
                    Toast.makeText(getApplicationContext(), "login successfully!", Toast.LENGTH_SHORT).show();

                    Intent intent = new Intent(LoginActivity.this, WelcomeActivity.class);
                    intent.putExtra("", email);
                    startActivity(intent);

                } else {
                    if (!checkEmailPassword)
                        Toast.makeText(getApplicationContext(), "Wrong email or password", Toast.LENGTH_SHORT).show();
                }

//// Reset Errors
//                etEmail.setError(null);
//                etPassword.setError(null);
//
//                boolean errorOccured = false;
//                View focusView = null;
//
//                // Check for a valid password if the user entered one
//                if(!isPasswordValid(password))
//                {
//                    etPassword.setError("Invalid password");
//                    focusView = etPassword;
//                    errorOccured = true;
//                }
//
//                // Check for a valid email, if the user enters one
//                if(!isEmailValid(email))
//                {
//                    etEmail.setError("Invalid Email");
//                    focusView = etEmail;
//                    errorOccured = true;
//                }
//
//                if(errorOccured)
//                {
//                    focusView.requestFocus();
//                }
//                else
//                {
//                    SharedPreferences.Editor editor = getSharedPreferences(PREFS, MODE_PRIVATE).edit();
//
//                    editor.putString(KEY_EMAIL, email);
//                    editor.apply();
//
//                    finish();
//                }
            }
//            private boolean isEmailValid(String email)
//            {
//                return email.contains("");
//            }
//
//            private boolean isPasswordValid(String password)
//            {
//                return password.length() > 4;
//            }
        });
    }
}
LoginActivity.java

public class DataBaseHelper extends SQLiteOpenHelper
{    
    public static final String DB_NAME = "users.dbHelper";
    public static final int DB_VERSION = 1;
    public static final String TABLE_USERS = "users";
    public static final String COLUMN_EMAIL = "email";
    public static final String COLUMN_PASSWORD = "password";
    public static final String[] ALL_COLUMNS = {COLUMN_EMAIL, COLUMN_PASSWORD};
    public DataBaseHelper dbHelper;
    public static SQLiteDatabase SQLiteDatabase;

    public static final String SQL_CREATE =
            "CREATE TABLE IF NOT EXISTS " + TABLE_USERS + " (" +
                    COLUMN_EMAIL + " STRING PRIMARY KEY, " +
                    COLUMN_PASSWORD + " STRING);";

    public static final String SQL_DROP = "DROP TABLE " + TABLE_USERS;

    public DataBaseHelper(@Nullable Context context)
    {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(SQL_CREATE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL(SQL_DROP);
        onCreate(db);
    }

    //---opens the database---
    public DataBaseHelper open() throws SQLException
    {

        SQLiteDatabase = this.getWritableDatabase();
        return this;
    }

    //---closes the database---
    public void close()
    {
        if (SQLiteDatabase != null)
            SQLiteDatabase.close();
        if (dbHelper != null)
            dbHelper.close();
    }

    // Checking if email exists
    public boolean checkEmail(String email)
    {
        SQLiteDatabase = this.getWritableDatabase();
        Cursor cursor = SQLiteDatabase.rawQuery("SELECT * FROM " + TABLE_USERS + " WHERE "
                + COLUMN_EMAIL + " =? ", new String[]{email});
        if (cursor.getCount() > 0) return false;
        else return true;
    }

    // Checking the email and password
    public boolean checkEmailPassword(String email, String password)
    {
        SQLiteDatabase = this.getWritableDatabase();
        Cursor cursor = SQLiteDatabase.rawQuery("SELECT * FROM " + TABLE_USERS + " WHERE "
                        + COLUMN_EMAIL + " =? " + " AND " + COLUMN_PASSWORD + " =? "
                , new String[]{email, password});
        if (cursor.getCount() > 0) return true;
        else return false;
    }

    public boolean insertEntry(String email, String password)
    {
        ContentValues newValues = new ContentValues();
        // Assign values for each row.
        newValues.put("EMAIL", email);
        newValues.put("PASSWORD", password);

        // Insert the row into your table
        long ins = SQLiteDatabase.insert(TABLE_USERS, null, newValues);
        ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
        if (ins == -1) return false;
        else return true;
    }

    public int deleteEntry(String email)
    {
        //String id=String.valueOf(ID);
        String where = "EMAIL=?";
        int numberOFEntriesDeleted = SQLiteDatabase.delete(TABLE_USERS, where, new String[]{email});
        // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
        return numberOFEntriesDeleted;
    }

    public String getSingleEntry(String email)
    {
        Cursor cursor = SQLiteDatabase.query(TABLE_USERS, null, " EMAIL=?", new String[]{email}, null, null, null);
        if (cursor.getCount() < 1) // UserName Not Exist
        {
            cursor.close();
            return "NOT EXIST";
        }
        cursor.moveToFirst();
        String password = cursor.getString(cursor.getColumnIndex("PASSWORD"));
        cursor.close();
        return password;
    }

    public void updateEntry(String email, String password)
    {
        // Define the updated row content.
        ContentValues updatedValues = new ContentValues();
        // Assign values for each row.
        updatedValues.put("EMAIL", email);
        updatedValues.put("PASSWORD", password);

        String where = "EMAIL = ?";
        SQLiteDatabase.update(TABLE_USERS, updatedValues, where, new String[]{email});
    }

    public String getUsername(String COLUMN_EMAIL) throws SQLException
    {
        String email = "No Email Found";
        SQLiteDatabase = this.getReadableDatabase();
        Cursor cursor = SQLiteDatabase.query(TABLE_USERS, new String[]{COLUMN_EMAIL}, null, null,
                null, null, null);
        if (cursor.moveToNext()) {
            cursor.moveToNext();
            cursor.moveToLast();

                email = cursor.getString(cursor.getColumnIndex(COLUMN_EMAIL));
        }
        cursor.close();

        return email;    
    }
public class WelcomeActivity extends AppCompatActivity
{

    private static int SPLASH_TIME_OUT = 4000;
    private SQLiteDatabase m_db;
    private TextView tvEmails;
    DataBaseHelper db = new DataBaseHelper(this);

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);    
        db = new DataBaseHelper(this);
        try {
            db = db.open();
        } catch (android.database.SQLException e) {
            e.printStackTrace();
        }

        TextView tvEmail = (TextView) findViewById(R.id.tvEmails);

//        Bundle bundle;
//        bundle = getIntent().getExtras();
//        tvEmail.setText(bundle.getString(""));

        String email = db.getUsername(DataBaseHelper.COLUMN_EMAIL);

        tvEmail.setText(email);

        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                Intent intent = new Intent(WelcomeActivity.this, EthicsActivity.class);
                startActivity(intent);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }
}
public class LoginActivity extends AppCompatActivity
{

    public static final String PREFS = "global_prefs";// UI References
    public static final String KEY_EMAIL = "email";

    private DataBaseHelper db;
    private EditText etEmail, etPassword;
    private Button btnSignIn;
    private TextView tvRegisterClick;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        final EditText etEmail = findViewById(R.id.etEmail);
        final EditText etPassword = findViewById(R.id.etPassword);
        Button btnSignIn = findViewById(R.id.btnSignIn);
        TextView tvRegisterClick = findViewById(R.id.tvRegisterClick);

        db = new DataBaseHelper(this);

        tvRegisterClick.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });

        btnSignIn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // Store values at the same time of the login attempt

                String email = etEmail.getText().toString();
                String password = etPassword.getText().toString();

                boolean checkEmailPassword = db.checkEmailPassword(email, password);
                if (checkEmailPassword) {
                    Toast.makeText(getApplicationContext(), "login successfully!", Toast.LENGTH_SHORT).show();

                    Intent intent = new Intent(LoginActivity.this, WelcomeActivity.class);
                    intent.putExtra("", email);
                    startActivity(intent);

                } else {
                    if (!checkEmailPassword)
                        Toast.makeText(getApplicationContext(), "Wrong email or password", Toast.LENGTH_SHORT).show();
                }

//// Reset Errors
//                etEmail.setError(null);
//                etPassword.setError(null);
//
//                boolean errorOccured = false;
//                View focusView = null;
//
//                // Check for a valid password if the user entered one
//                if(!isPasswordValid(password))
//                {
//                    etPassword.setError("Invalid password");
//                    focusView = etPassword;
//                    errorOccured = true;
//                }
//
//                // Check for a valid email, if the user enters one
//                if(!isEmailValid(email))
//                {
//                    etEmail.setError("Invalid Email");
//                    focusView = etEmail;
//                    errorOccured = true;
//                }
//
//                if(errorOccured)
//                {
//                    focusView.requestFocus();
//                }
//                else
//                {
//                    SharedPreferences.Editor editor = getSharedPreferences(PREFS, MODE_PRIVATE).edit();
//
//                    editor.putString(KEY_EMAIL, email);
//                    editor.apply();
//
//                    finish();
//                }
            }
//            private boolean isEmailValid(String email)
//            {
//                return email.contains("");
//            }
//
//            private boolean isPasswordValid(String password)
//            {
//                return password.length() > 4;
//            }
        });
    }
}

由于您在开始WelcomeActivity之前已成功登录,因此无需根据从数据库收到的电子邮件从数据库中获取电子邮件(这听起来很愚蠢/无用)。但是,您需要做的是将电子邮件从登录活动传递到欢迎活动。这就是你的问题所在

您遇到的第一个问题是使用
intent.putExtra(“,email”)没有有用的标识符,无法在尝试提取时确定额外的代码。相反,您应该使用(密钥\电子邮件存在):-

intent.putExtra(密钥电子邮件、电子邮件)//