Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Android 需要sqlite db不接受空值_Android_Sqlite_Insert_Null - Fatal编程技术网

Android 需要sqlite db不接受空值

Android 需要sqlite db不接受空值,android,sqlite,insert,null,Android,Sqlite,Insert,Null,我的sqlite db接受空值,我不知道为什么。我的表是“主键”,列是“文本不为空”。Db不应接受空值、非唯一值和大于第1行的插入 DB: 插入方法: private void insertCredentials(RegDetails regDetails){ LoginDB androidOpenDBHelper = new LoginDB(this); SQLiteDatabase sqliteDB = androidOpenDBHelpe

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

DB:

插入方法:

         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();
    }   

  }

这是因为您不使用SQLite网站上描述的冲突失败:

如果您想要查询示例,可以查看前面的问题:

希望这对你有帮助


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

rUsername和rPassword来自哪里?如果这些是从一个编辑文本(或类似的)中读取的,那么空白值不是“代码> null <代码>而是一个空字符串(<代码>)>代码>。<代码>(受影响的CulnID < 0){< /Cult> <代码> SqLeDeb.如果无法插入,则返回
-1
。我不同意。启用
非空
约束不需要对冲突使用
,它只是提供了一种在错误发生后处理错误的不同方法。
         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();
    }   

  }