有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java身份验证代码在安卓 studio(SQLite)中不起作用

我是安卓 studio的新手,正在尝试制作简单的登录表单,这是我的实验室作业。 当我点击登录按钮时,它会显示用户名或密码错误,即使是真的。 SqlHelper。爪哇

 package com.example.mogli.henabenparekhrajthakkar_comp304_lab4;

import 安卓.content.ContentValues;
import 安卓.content.Context;
import 安卓.database.Cursor;
import 安卓.database.sqlite.SQLiteDatabase;
import 安卓.database.sqlite.SQLiteOpenHelper;
import 安卓.util.Log;
import 安卓.widget.Toast;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Mogli on 11/30/2017.
 */

public class SqlHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "hospital.db";
    //nurse table name & columns
    private static final String NURSE_TABLE_NAME = "nurses";
    private static final String NURSE_COLUMN_ID = "nurseId";
    private static final String NURSE_COLUMN_FIRST_NAME = "nurseFirstName";
    private static final String NURSE_COLUMN_LAST_NAME = "nurseLastName";
    private static final String NURSE_COLUMN_DEPARTMENT = "nurseDepartment";
    private static final String NURSE_COLUMN_PASSWORD = "nursePassword";
    //doctor table name & columns
    private static final String DOCTOR_TABLE_NAME = "doctors";
    private static final String DOCTOR_COLUMN_ID = "doctorId";
    private static final String DOCTOR_COLUMN_FIRST_NAME = "doctorFirstName";
    private static final String DOCTOR_COLUMN_LAST_NAME = "doctorLastName";
    private static final String DOCTOR_COLUMN_DEPARTMENT = "doctorDepartment";
    private static final String DOCTOR_COLUMN_PASSWORD = "doctorPassword";

    private static final String NURSE_TABLE_CREATE = "create table if not exists nurses( nurseId text primary key not null, "
    + "nurseFirstName text not null, nurseLastName text not null, nurseDepartment text not null, nursePassword text not null );";

    private static final String DOCTOR_TABLE_CREATE = "create table if not exists doctors( doctorId text primary key not null, "
     + "doctorFirstName text not null, doctorLastName text not null, doctorDepartment text not null, doctorPassword text not null );";

    //insert query
    /*private String insertIntoNurse = "INSERT INTO nurses (nurseId, nurseFirstName, nurseLastName, nurseDepartment, nursePassword)"
    +"VALUES ('john123', 'john', 'doe', 'd1', '123john' ), ('jonahdoe', 'jonah', 'doe', 'd2', '123jonah'), ('hannah123', 'hannah', 'montana', 'd3', 'hm123');";*/

    public SqlHelper(Context context)
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        try {
            sqLiteDatabase.execSQL(NURSE_TABLE_CREATE);
            sqLiteDatabase.execSQL(DOCTOR_TABLE_CREATE);
        }
        catch(Exception e)
        {
            Log.d("myMsg", "Error creating table");
        }
    }
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        String nurse_query = "DROP TABLE IF EXISTS " + NURSE_TABLE_NAME;
        String doctor_query = "DROP TABLE IF EXISTS " + DOCTOR_TABLE_NAME;
        sqLiteDatabase.execSQL(nurse_query);
        sqLiteDatabase.execSQL(doctor_query);
        onCreate(sqLiteDatabase);
    }
    public boolean checkUser(String email, String password) {

        // array of columns to fetch
        String[] columns = {
                NURSE_COLUMN_ID
        };
        SQLiteDatabase db = this.getReadableDatabase();
        // selection criteria
        String selection = NURSE_COLUMN_ID + " = ?" + " AND " + NURSE_COLUMN_PASSWORD + " = ?";

        // selection arguments
        String[] selectionArgs = {email, password};

        // query user table with conditions
        /**
         * Here query function is used to fetch records from user table this function works like we use sql query.
         * SQL query equivalent to this query function is
         * SELECT user_id FROM user WHERE user_email = 'jack@安卓tutorialshub.com' AND user_password = 'qwerty';
         */
        Cursor cursor = db.query(NURSE_TABLE_NAME, //Table to query
                columns,                    //columns to return
                selection,                  //columns for the WHERE clause
                selectionArgs,              //The values for the WHERE clause
                null,                       //group the rows
                null,                       //filter by row groups
                null);                      //The sort order

        int cursorCount = cursor.getCount();

        cursor.close();
        db.close();
        if (cursorCount > 0) {
            return true;
        }

        return false;
    }
    public String searchPass(String NURSE_COLUMN_ID)
    {
        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        String query = "select nurseId, nursePassword from "+ NURSE_TABLE_NAME;
        Cursor cursor =sqLiteDatabase.rawQuery(query, null);
        String a, b;
        b = "";
        if(cursor.moveToFirst())
        {
            do
            {
                a = cursor.getString(0);
                b = cursor.getString(1);
                if(a.equals(NURSE_COLUMN_ID))
                {
                    b = cursor.getString(1);
                    break;
                }
            }
            while(cursor.moveToNext());
        }
        return b;
    }
    public void addNurses(Nurse nurse)
    {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(NURSE_COLUMN_ID, nurse.getNurseId());
        values.put(NURSE_COLUMN_FIRST_NAME, nurse.getNurseFirstName());
        values.put(NURSE_COLUMN_LAST_NAME, nurse.getNurseLastName());
        values.put(NURSE_COLUMN_DEPARTMENT, nurse.getNurseDepartment());
        values.put(NURSE_COLUMN_PASSWORD, nurse.getNursePassword());
        db.insert(NURSE_TABLE_NAME,null,values);
        db.close();
    }
    public List<Nurse> getAllNurses() {
        List<Nurse> nurseList = new ArrayList<Nurse>();
// Select All Query
        String selectQuery = "SELECT * FROM " + NURSE_TABLE_NAME;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

// looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Nurse nurse = new Nurse();
                nurse.setNurseId(cursor.getString(0));
                nurse.setNurseFirstName(cursor.getString(1));
                nurse.setNurseLastName(cursor.getString(2));
                nurse.setNurseDepartment(cursor.getString(3));
                nurse.setNursePassword(cursor.getString(4));
// Adding contact to list
                nurseList.add(nurse);
            } while (cursor.moveToNext());
        }

// return contact list
        return nurseList;
    }
}

在日志文件中创建数据库并插入数据。但是,即使用户名和密码正确,登录代码在日志控制台中也会显示false


共 (0) 个答案