0
votes

I have two tables in my database. Those are user and message.

User table contains with,

  1. Userid (Primary key)
  2. UserName
  3. Password columns

Message table contains with,

  1. MessageId (Primary Key)
  2. Userid (Foreign key)
  3. Subject
  4. Message columns

After login user can send a message. So I want to save the above column details in the message table. But when I fill the table, userid is not getting as a foreign key. That column is empty like the following image.

enter image description here

These are my dbHandler code

public void onCreate(SQLiteDatabase db) {
    String TABLE_USER_CREATE = "CREATE TABLE "+ UserTable.Users.TABLE_NAME+"("+
            UserTable.Users._ID+" INTEGER PRIMARY KEY,"+
            UserTable.Users.COLUMN_NAME+" TEXT,"+
            UserTable.Users.COLUMN_PASSWORD+ " TEXT,"+
            UserTable.Users.COLUMN_TYPE+ " TEXT"+" );";
    db.execSQL(TABLE_USER_CREATE);

    String TABLE_MESSAGE_CREATE = "CREATE TABLE "+ MessageTable.Messages.TABLE_NAME+"("+
            MessageTable.Messages._ID+" INTEGER PRIMARY KEY,"+
            MessageTable.Messages.COLUMN_USER+" TEXT,"+
            MessageTable.Messages.COLUMN_SUBJECT+ " TEXT,"+
            MessageTable.Messages.COLUMN_MESSAGE+" TEXT,"+
            " FOREIGN KEY ("+ MessageTable.Messages.COLUMN_USER+") REFERENCES "+ UserTable.Users.TABLE_NAME+"("+ UserTable.Users._ID+"))";
    db.execSQL(TABLE_MESSAGE_CREATE);
}

Save message Method:

 public long saveMessage(String subjects, String messages){
    SQLiteDatabase db = getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(MessageTable.Messages.COLUMN_SUBJECT,subjects);
    contentValues.put(MessageTable.Messages.COLUMN_MESSAGE,messages);

   long newRowId = db.insert(MessageTable.Messages.TABLE_NAME,null,contentValues);

    db.close();
    return newRowId; }

I'm new to android. Can somebody help me to fix this?

1

1 Answers

0
votes

It's NULL because you never set it. Foreign keys aren't magic, they're just a constraint that whatever value you add must be present in the referenced column.

As you also didn't add a NOT NULL constraint, it just adds exactly what you told it to - only the subject and message.