0

我的 sqlite db 接受空值,我不知道为什么。我将表作为“主键”,将列作为“文本非空”。Db 不应接受空值、非唯一值和大于第 1 行的插入。

D B:

    public void onCreate(SQLiteDatabase db) {

        String sqlDataStore = "create table if not exists " +
        TABLE_NAME_CREDENTIALS + " ("+ BaseColumns._ID + " integer primary key ,"

                    + COLUMN_NAME_USERNAME + " text not null unique,"
                    + COLUMN_NAME_PASSWORD + " text not null unique);";


        db.execSQL(sqlDataStore);
    }


    public static boolean Login(String username, String password) {

        Boolean Login = true;
        Cursor c =  db.rawQuery(
                "SELECT * FROM " + TABLE_NAME_CREDENTIALS + " WHERE "
                        + COLUMN_NAME_USERNAME + " = '" + username +"' AND "+ COLUMN_NAME_PASSWORD +" = '"+ password +"'" ,  null);
         if (c.getCount() > 0) {
                Login = false;
            }
            c.close();
            return Login;
    }

插入方法:

         private void insertCredentials(RegDetails regDetails){

        LoginDB androidOpenDBHelper = new LoginDB(this);
        SQLiteDatabase sqliteDB = androidOpenDBHelper.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put(LoginDB.COLUMN_NAME_USERNAME, rUsername);
        contentValues.put(LoginDB.COLUMN_NAME_PASSWORD, rPasscode);

        long affectedColumnid = sqliteDB.insert(LoginDB.TABLE_NAME_CREDENTIALS, null, contentValues);

        if(affectedColumnid > 1){
        Toast.makeText(getApplicationContext(), "Account Already Exist! Please login" + affectedColumnid, Toast.LENGTH_SHORT).show();
        finish();
        }else {
            Toast.makeText(getApplicationContext(), "Credentials Saved! Please login" + affectedColumnid, Toast.LENGTH_SHORT).show();
        }
        sqliteDB.close();
        finish();
    }   

  }
4

1 回答 1

0

它来自您没有使用 SQLite 网站上描述的 ON CONFLICT FAIL 的事实:http ://www.sqlite.org/lang_conflict.html

如果您想要查询示例,可以查看上一个问题:SQLite 中的 NOT NULL 列和错误捕获

希望这会帮助你。

旁注:要构建长字符串,最好使用 StringBuilder。

于 2012-08-30T22:55:22.177 回答