Как использовать статический пользователь в заимствовании элемента из списка элементов с помощью sqlite - PullRequest
0 голосов
/ 27 марта 2019

Моя проблема связана с sqlite и android studio.

Я пытаюсь использовать статического пользователя для добавления в таблицу внешних ключей и список элементов.

чтобы связать пользователя с предметом, который он одолжил.

Я не совсем понимаю, как использовать кнопку заимствовать в базе данных внешних ключей sql.

К сожалению, я не смог найти то, что включает в себя ту же проблему, что и у меня

файл проблемы базы данныхhelper

public boolean addBorrow(int ID,String Item, String MARK ) {
  ContentValues contentValues = new ContentValues();
    SQLiteDatabase db = this.getWritableDatabase();
    String query =  "INSERT INTO " + TABLE_ORDER +
    COL2 + " SELECT FROM " + TABLE_ITEM +
       " WHERE " + COL1 + " = '" + ID +  "'";

    String query1 =  "INSERT INTO " + TABLE_ORDER +
            COL2 + " SELECT FROM " + TABLE_USER +
            " WHERE " + COL7 + " = '" + MARK +  "'";

    db.execSQL(query);
    db.execSQL(query1);

    long result = db.insert(TABLE_ORDER, null, contentValues);

    //if date as inserted incorrectly it will return -1
    if (result == -1) {
        return false;
    } else {
        return true;
    }
}


public static final String ITEM_DB = "items.db";
public static final String TABLE_ITEM = "items_data";
public static final String COL1 = "ID";
public static final String COL2 = "ITEM";
public static final String COL3 = "ITEMCATEGORIE";
public static final String COL4 = "ITEMDESCRIPTION";
public static final String COL5 = "ITEMQUANTITY";


public static final String USER_DB = "user.db";
public static final String TABLE_USER = "user_data";
public static final String COL6 = "ID_USER";
public static final String COL7 = "MARK";


public static final String ORDER_DB = "order.db";
public static final String TABLE_ORDER = "order_data";
public static final String COL8 = "ID_ORDER";

файл addBorrowItem

@Override
protected  void onCreate(@Nullable Bundle savedInstancesState){
    super.onCreate(savedInstancesState);
    setContentView(R.layout.edit_item_layout);
    vBorrow = (Button) findViewById(R.id.vBorrow);
    Borrow = (Button) findViewById(R.id.Borrow);
    myDB = new DatabaseHelper(this);


    vBorrow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(addBorrowedItem.this,ViewBorrowedItem.class);
            startActivity(intent);
        }
    });

    Borrow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(!BorrowItem.equals("")){
                myDB.addBorrow(BorrowItem,selectedID,ItemName,Username);

            }else {
                toastMessage("you must enter a name");
            }
        }
    });

vBorrow = кнопка просмотра в xml

Заимствовать = кнопка заимствования в XML

Я надеялся, что предмет добавится в список заимствованных предметов

вместо этого я получаю ошибку

Нестатический метод equals (java.lang.Object) не может быть вызван из статического контекста

Это потому, что я пытался добавить статический объект с нестатическим?

1 Ответ

2 голосов
/ 27 марта 2019

Я надеялся, что товар добавится в список заимствованных. товар

Определение внешнего ключа с использованием чего-то вроде column references parenttable(parentcolumn) добавляет правило (ограничение), согласно которому значение, назначаемое столбцу, должно быть значением в родительском столбце строки в родительской таблице.

Не вставляет значения в таблицы. Вы должны определить значение.

Если у вас есть родительская таблица (еда) со значениями хлеба, масла, молока в столбце еды и меню таблицы с chosenfood references food(food), тогда

insert into menu (menuname,chosenfood) values('Menu1','bread')

вставит строку в таблицу меню.

insert into menu (menuname,chosenfood) values('Menu2','eggs')

не будет вставлять строку, так как в столбце еды таблицы еды нет ряда яиц.

Ваша мысль подразумевает, что SQLite от вашего имени должен решить, что с помощью

insert into menu (menuname) values('Menu3')

выберет подходящее значение из списка хлеб, масло и молоко. Что бы выбрать? (это риторический). Он не может знать, правильная ли цена хлеба, масла или молока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...