2012-03-07 50 views
0

我有一些創建語句,應該在我的Android應用程序中首次創建數據庫時運行。它們被格式化爲這樣:正確格式化SQLite SQL語句

<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上運行(有thise可能工作)?更具體地說,部分Android文檔狀態SQL語句不應以分號結束,而部分不會提到分號。

回答

0

我沒有使用INSERT語句直接使用SQL語法,只能使用SQLDatabase API;但根據我的經驗,我會說,你的CREATE聲明將按書面形式工作。就API文檔而言,它非常簡單:使用那些使用分號的方法;如果您需要使用那些不允許它們結尾的方法使用相同的語句,請使用分號。 (你也可以用另一種方式工作:避免在你的語句中使用分號,只有當你使用那些需要分號的API方法使用這些語句時才加上適當的結尾標點符號。)

但是,我對這個事實有點困惑您將XML語句包含在SQL語句中(更不用說它們是string-array中的唯一項)。通常,我習慣用String連接的形式在Java代碼中看到它們。

+0

使用字符串數組是因爲可能會有多個語句運行。我將它們放在XML文件中的原因是爲了保持與數據庫相關的所有內容。如果你能指向我的資源,它顯示了保留SQL語句的最佳位置,因爲我讀過的所有教程和資源都非常簡單;只顯示在Android上使用SQLite的必要條件。 – 2012-03-08 15:06:48

+1

@MikeD我沒有你可能稱爲權威的源代碼,但我已經看到數據庫交互通常保存在一個類中:Content Provider,或者如果開發人員希望他們自己的應用程序直接訪問數據庫的簡單包裝器。該類是存儲與數據庫相關的所有內容的地方。比如你的'CREATE'等語句存儲在'static final String'字段中,並在適當的時候使用。 – 2012-03-08 15:31:33