2012-03-07 3 views
0

У меня есть несколько операторов создания, которые должны запускаться, когда база данных сначала создается в приложении для Android. Они отформатированы как таковые:Правильное форматирование SQL-запросов для SQLite

<string-array 
     name="uaDBcreates"> 
     <item> 
      CREATE TABLE pos_locations (
       _id INTEGER PRIMARY KEY, 
       location_name TEXT, 
       service_url TEXT, 
       latitude REAL DEFAULT 0, 
       longitude REAL DEFAULT 0 
      ); 
     </item> 
    </string-array> 

    <string-array 
     name="uaDBInserts"> 
     <item> 
      INSERT INTO urbanAgendaDB.pos_locations (
        _id, 
        location_name, 
        service_url 
        latitude, 
        longitude) 
       VALUES (
        000001, 
        OfficeTest, 
        http://myservice.com/DoStuff, 
        45.530315, 
        -73.569939); 
     </item> 
    </string-array> 

Вообще, это правильное форматирование для операторов SQL, которые могут быть запущены в SQLite на Android (это ДАННОЕ вероятно, будет работать)? Более конкретно, части документов Android docs state SQL не должны заканчиваться точкой с запятой, в то время как части не упоминают о полуколонах.

ответ

0

Я не использовал INSERT операторы с прямым синтаксисом SQL, только с помощью API SQLDatabase; но из моего опыта я бы сказал, что ваше заявление CREATE будет работать так, как написано.

Что касается документов API, то это довольно просто: использовать эти операторы с помощью любого метода, допускающего точки с запятой; разделите точки с запятой, если вам нужно использовать те же самые инструкции с методами, которые не позволяют им в конце. (Вы также можете работать с ним наоборот: избегайте точки с запятой в ваших утверждениях, а затем добавляйте правильную конечную пунктуацию только тогда, когда вы используете эти утверждения с помощью методов API, требующих точки с запятой.)

Однако меня немного смущает факт вы включаете свои операторы SQL в XML (не говоря уже о том, что они являются единственным элементом в string-array). Как правило, я привык видеть их в Java-коде, в форме String конкатенаций.

+0

Использование строкового массива состоит в том, что, вероятно, будет запущено несколько операторов. Причина, по которой я их в XML-файле, заключается в том, чтобы сохранить все, что связано с БД, на месте. Если бы вы могли указать мне на ресурс, который показывает лучшее место для хранения SQL-заявлений, поскольку все обучающие материалы и ресурсы, которые я прочитал, были довольно упрощенными; только показывая, что нужно использовать SQLite на Android. –

+1

@MikeD У меня нет того, что вы можете назвать авторитетным источником, но я видел взаимодействие с базой данных, которое обычно хранится в одном классе: поставщик контента или простая оболочка, если разработчику требуется, чтобы собственное приложение напрямую обращалось к базе данных , Этот класс - это место, где хранится все, связанное с базой данных. Например, такие выражения, как ваш 'CREATE', хранятся в полях' static final String' и используются всякий раз, когда они подходят. –

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