2016-04-15 2 views
-4

Так у меня есть раздел в моей базе данных, где мне нужно сделать присоединиться таблицы выглядеть следующим образом ...Android SQLite Синтаксис запросов вызывает sqlite.SQLiteException

______________   _______________ 
|Vehicle  |   |Car   | 
|--------------|   |---------------| 
|_id  PK |   |_id   PK | 
|Warehouse  |   |VehicleId FK | 
|Location  |   |Make   | 
|VehicleKey |   |Model   | 
|______________|   |_______________| 

Автомобиль VehicleID внешнего ключа от автомобиля Основной ключ. То, что я хочу вернуть, - это курсор для каждого автомобиля.

Склад Местоположение Марка Модель

Я не знаю, как я бы построить SQLite заявление, может кто-нибудь дать мне руку ?? До сих пор у меня есть это как мой метод, чтобы восстановить все автомобили

public Cursor getCars() 
{ 
    Cursor c = database.query("SELECT Vehicle.Warehouse, Vehicle.Location, Vehicle.VehicleKey, Car.Make," + 
        " Car.Make FROM Vehicle INNER JOIN Car" + 
        "ON Vehicle Vehicle._id = Car.VehicleId", 
      null, null,null,null,null,null,null); 

    return c; 
} 

Я довольно новыми для этого способа делать манипуляции с базой данных, как я обычно это было сделано для меня строитель, как я только когда-либо работал в C#. Может ли кто-нибудь помочь мне, пытаясь получить правильные результаты?

Существует ошибка производства, но я думаю, что это из-за синтаксис SQLITE заявления

android.database.sqlite.SQLiteException: near "SELECT": syntax error (code 1): , while compiling: SELECT * FROM SELECT Vehicle.Warehouse......... 
+0

код в исключения, и что вы выложили отличается. У него нет 'SELECT *' statement –

+0

По какой-то причине, когда я использую .query(), он ставит в начале и им не уверен, почему? –

+0

** 1 ** 'query()' не работает с SQL-запросами, а 'rawQuery()' делает. ** 2 ** '... ON Vehicle Vehicle._id = Patient.VehicleId' У вас нет таблицы с именем ** Patient ** –

ответ

0

Там неты перегруженных метод query, которые принимают Sql строку в качестве параметра.

Смотрите документацию для query методов здесь .:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Первый параметр, как правило, имя таблицы.

Система пытается построить Sql запрос, используя весь свой запрос в качестве имени таблицы поэтому вы получите запрос, такие как «SELECT * FROM SELECT, автомобиль ...» и т.д.

Либо поставить правильные параметры в query или использовать метод rawQuery, который ожидает стандартную строку Sql.

+0

Как бы это сделать без использования rawQuery()? Я посмотрел на doc, но ближе всего к тому, что мне нужно, это rawQuery(), но его API выше того, что мне нужно написать. –

+0

Ответ, который я дал, относится к заданному вами вопросу. Если у вас есть новый вопрос, вы должны отправить его на сайт. Добавление дополнительных комментариев в комментарии становится непонятным для будущих читателей. Однако для записи оба метода возвращают курсор, поэтому я не понимаю, почему вы хотите избежать метода rawQuery, когда это явно больше подходит для ваших нужд, учитывая, что у вас уже есть необработанный SQL-запрос для его доставки. – Kuffs

+0

Спасибо, это было требование для проекта, который позволил бы мне развиваться на API15. Или я бы воспользовался вашим ответом, так как это решило проблему. –

-2

Вы можете изменить запрос, используя следующий синтаксис:

SELECT table1.column1, table2.column2... 
FROM table1 
INNER JOIN table2 
ON table1.common_field = table2.common_field; 
+0

Это не ответ. –

0
 String table = "Vehicle v INNER JOIN Car c ON Vehicle v._id = c.VehicleId"; 
    String[] columns = new String[]{ "v.Warehouse", "v.Location", "v.VehicleKey", "c.Make"}; 
    /*String where condition for example "where v.id = 1" 3rd parameter is your where codition in your db.query function */ 
/*db.query with where condtion : Cursor c = db.query(table,columns,"where v.id = 1",null,null,null,null,null);*/ 
    Cursor c = db.query(table,columns,null,null,null,null,null,null); 

Проверьте запрос, так как я не вижу таблицу пациента в вашем присоединиться

+0

Да, я сделал, это была опечатка. –

+1

'android.database.sqlite.SQLiteException: рядом с" v ": синтаксическая ошибка (код 1): при компиляции: SELECT v.Warehouse, v.Location .......' Когда я пытаюсь это решение –

+0

can u поместить отладчик der n check wat запрос делается n plsss post thexception, если u может –

Смежные вопросы