sqlite db가 null 값을 받고 있으며 이유를 모르겠습니다. 내 테이블을 "기본 키"로, 내 열을 "텍스트 Null"로 설정했습니다. DB는 널 (null)이 아닌 고유 한 값을 적용하고 1null 값을 허용하지 않으려면 sqlite db가 필요합니다.
DB 행보다 큰 삽입해서는 안 :
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();
}
}
'rUsername'과'rPassword'는 어디에서 유래 되었습니까? 이것들이 EditText (또는 이와 유사한 것)에서 읽혀지면 공백 값은'null'이 아니라 빈 문자열 ('''')입니다. – Sam
'if (affectedColumnid <0) {''sqliteDB.insert()'는 삽입 할 수없는 경우'-1'을 반환합니다. – zapl