Я хочу подключиться к таблицам в моей базе данных с разными ID (CustomerID
, OrderID
). Я использую следующий код, чтобы создать свой внешний ключ:Нет такого столбца с внешним ключом
FOREIGN KEY("+ COLUMN_ORDER_ID + ") REFERENCES+TABLE_NAME_CUSTOMER + "(" + COLUMN_CUSTOMER_ID + "));";
Я не проводки полного исходного кода, потому что мой первый стол отлично работает, и я думаю, что проблема является внешним ключом.
отфильтровать данные с помощью этого метода:
public List<Orders> getOrdersByCustomerID() {
List<Orders> orderList = new ArrayList<Orders>();
String query = "select " + COLUMN_ORDER_ID
+ "," + COLUMN_ORDER_NAME
+ "," + COLUMN_SETS
+ "," + COLUMN_REPEATS
+ "," + COLUMN_SECTION
+ " from " + TABLE_NAME_ORDERS
+ " where " + COLUMN_CUSTOMER_ID
+ "=" + COLUMN_ORDER_ID;
db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
Orders orders = new Orders(cursor.getString(0), cursor.getString(1), cursor.getInt(2), cursor.getInt(3), cursor.getString(4));
orderList.add(orders);
} while (cursor.moveToNext());
}
db.close();
return orderList;
}
Я получаю сообщение об ошибке:
06-26 17: 11: 26.154 10163-10163/com.xxx.xxx.xxx
Е/AndroidRuntime: неустранимый: основной процесс: com.xxx.xxx.xxx, ПИД: 10163
java.lang.RuntimeException: Невозможно начать деятельность android.database.sqlite.SQLiteException: нет такого столбца: customerId (Sqlite code 1): при компиляции: выберите orderId, orderName, наборы, повторы, раздел из заказов, где customerId = orderId, (ошибка ОС - 2: Нет такого файла или каталога)
Я думаю, что связь между этими двумя идентификаторами неверна или мне нужно передать идентификатор из таблицы моих клиентов? Какие-нибудь советы? По моему мнению, Customer
может иметь несколько Order
. Вот почему я использую внешний ключ; Надеюсь, это правильно.
Ошибки относится к колонку ('customerId'), которую он не нашел в таблице (' orders') - вы можете показать нам структуру (имена столбцов) ваш ' таблица заказов? – ishmaelMakitla
customerId - это столбец в моей таблице покупателя, в моей таблице заказов у меня нет столбца с именем costumerId – developKinberg
. Тогда ваш запрос (как отражено в ошибке) неверен: '' select orderId, orderName, sets, repeat, section от заказов, где customerId = orderId ... "' - почему вы проверяете, является ли 'customerId' (по порядкам таблицы) равным' orderId'? Вместо этого это должен быть идентификатор клиента, который передается в качестве аргумента вашей функции. – ishmaelMakitla