首页 文章

无法为sqlite添加用户名/密码

提问于
浏览
-1

我正在尝试将用户名和密码(uname和pword)添加到sqlite数据库,但我无法这样做 . 我使用以下方法调用了我的DatabaseConnector类:

Activity1.java

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

        setContentView(R.layout.ui1);

        addListenerOnButton();
        DatabaseConnector dConnector = new DatabaseConnector(this);
        dConnector.addUser(null, null);

然后我尝试使用addUser方法在这里添加一个新的用户名和密码:

DatabaseConnector.java

public class DatabaseConnector extends SQLiteOpenHelper {

private static final int Version =1;
private static final String firstName="FIRST_NAME";
private static final String lastName="LAST_NAME";
private static final String email="EMAIL";
private static final String phoneNumber="PHONE_NUMBER";
private static final String username="USERNAME";
private static final String password="PASSWORD";
private static final String databaseName="FORM";
private static final String tableName="USER_RECORDS";
private static final String id = "ID";

    public DatabaseConnector(Context context) {
        super(context, databaseName, null, Version);

    }

    @Override
    public void onCreate(SQLiteDatabase database) {
        String createTableSQL = "CREATE TABLE " + tableName + " (" + id +" INTEGER NOT NULL PRIMARY KEY, " + firstName +" TEXT, " + lastName
                + " TEXT, " +email + " TEXT, " + phoneNumber + " TEXT, " + username + " TEXT, " + password + " TEXT)";
        Log.d("onCreate()", createTableSQL);
        database.execSQL(createTableSQL);


    }

    @Override
    public void onUpgrade(SQLiteDatabase database, int arg1, int arg2) {

    }

    public void addUser(String uname, String pword ) {
        String insertSQL = "INSERT INTO " + tableName + " (" + username + " ," + password + ") "
                + "VALUES" + " ('" + uname + "', '" + pword + "')" ;
        Log.d("addRecord()", insertSQL);
        SQLiteDatabase dataBase = this.getWritableDatabase();
        dataBase.execSQL(insertSQL);
        dataBase.close();
    }
    public void addRecord(String firstname, String lastname, String emailAddress, String phone, String uname, String pword ) {
        String insertSQL = "INSERT INTO " + tableName + " (" + firstName + ", " + lastName + " ," + email + " ," + phoneNumber + " ," + username + " ," + password + ") "
                + "VALUES" + " ('" + firstname + "', '" + lastname + "', '" + emailAddress + "', '" + phone + "', '" + uname + "', '" + pword + "')" ;
        Log.d("addRecord()", insertSQL);
        SQLiteDatabase dataBase = this.getWritableDatabase();
        dataBase.execSQL(insertSQL);
        dataBase.close();
    }

    public List<String> getRecord(String uname, String pword) {
        List<String> recordList = new ArrayList<String>(); 
        SQLiteDatabase dataBase = this.getReadableDatabase();
        String getSQL = "SELECT * FROM " + tableName + " WHERE " + username + " = '" + uname + "' AND " + password + " = '" + pword + "'";
         Cursor cursor = dataBase.rawQuery(getSQL , null);
         Log.d("getRecord()", getSQL + "##Count = " + cursor.getCount());
         cursor.moveToFirst();
         String fName = cursor.getString(1);
         String lName = cursor.getString(2);
         String eMail = cursor.getString(3);
         String ph = cursor.getString(4);
         Log.d("getRecord()", "FirstName: " + fName + "LastName: " + lName + "Email: " + eMail + "Phone" + ph);
         recordList.add(fName);
         recordList.add(lName);
         recordList.add(eMail);
         recordList.add(ph);
         dataBase.close();
         return recordList;

    }


}

问题:

每次尝试使用凭据uname和pword登录时都会失败 .

1 回答

  • 2

    我不明白你为什么从 onCreate() 传递 nullunamepword . 无论如何你在这里存储 usernamepassword 而不是已经初始化的 unamepword 这样的常量 .

    public void addUser(String uname, String pword ) {
            String insertSQL = "INSERT INTO " + tableName + " (" + username + " ," + password + ") "
                    + "VALUES" + " ('" + uname + "', '" + pword + "')" ;
            Log.d("addRecord()", insertSQL);
            SQLiteDatabase dataBase = this.getWritableDatabase();
            dataBase.execSQL(insertSQL);
            dataBase.close();
        }
    

    如果这不能解决,请进行更多澄清,以便有可能编辑我的答案 .

相关问题