2016-01-23 205 views
0

我正在創建我的第一個啓用數據的應用程序,但我正在與最後一部分掙扎 - 實際上是添加和檢索數據。現在我只關心向表中添加數據。以下this tutorial我已經創建了我的表和一個DBHelper類與我的所有CRUD方法的模型類(我可以發佈所有這些如果需要但不知道他們有必要回答這個問題,請糾正我,如果我錯了!)。不幸的是,教程在這裏結束,並沒有詳細討論如何將數據從應用程序的UI傳遞到數據庫。將數據添加到SQLite

經過Google的一些搜索,我發現了一個如何傳遞一些數據到這些方法的例子,但一次只傳遞一個數據,所以只有當我的表只有一個字段時才真正有用 - 我的更多不止一個。例如,如果我有一個表「Todo」任務,在我的dbhelper中,我的create方法可能是;

public void createTodo(String todoText) { 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put("todo", todoText); 
    // Insert into DB 
    db.insert("todos", null, contentValues); 
} 

所以從我的活動我只需要

dao.createTodo(todoTextValue); 

對於我的應用我會在同一時間內添加多個領域,所以我創建方法如下所示;

public long createSite(Site site){ 
    SQLiteDatabase database = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_SITE_NAME, site.getSiteName()); 
    values.put(KEY_SITE_LAT, site.getSiteLat()); 
    values.put(KEY_SITE_LON, site.getSiteLon()); 
    values.put(KEY_CREATED_AT, site.getSiteCreatedDateTime()); 

    // Insert Row 
    long siteid = database.insert(TABLE_SITES, null, values); 

所以我的問題確實是我如何將所有不同的數據位傳遞給createSite方法。

+0

你所說的「創造」的方法呢? 「createSite」方法? –

+0

我不清楚你問什麼,確切地說。看起來你已經明白了。 –

+0

道歉,是的確切 –

回答

1

我不知道這是否真的需要一個答案,但還有這裏的代碼...

假設你的站點類是這樣的。

public class Site { 
     private String siteName; 
     private double siteLat; 
     private double siteLon; 
     private Date siteCreatedDateTime; 

     // getters and setters here 
    } 

然後,將數據從EditText值傳遞到新的Site對象。它會在你的活動中看起來像這樣。

EditText siteNameInput = (EditText) findViewById(R.id.siteNameInput); 
EditText siteLatInput = (EditText) findViewById(R.id.siteLatInput); 
EditText siteLonInput = (EditText) findViewById(R.id.siteLonInput); 
EditText siteCreatedDateTimeInput = (EditText) findViewById(R.id.siteCreatedDateTimeInput); 

String siteName = siteNameInput.getText().toString(); 
String siteLat = siteLatInput.getText().toString(); 
String siteLon = siteLonInput.getText().toString(); 
String siteCreatedDateTime= siteCreatedDateTimeInput.getText().toString(); 

Site site = new Site(); 
site.setSiteName(siteName); 
site.setSiteLat(siteLat); 
site.setSiteLon(siteLon); 
site.setSiteCreatedDateTime(siteCreatedDateTime); 

dao.createSite(site); 

希望這有助於你...你可以瞭解更多關於面向對象編程在Java中here

0

Todo和Site是模型。每個變量代表該表的一列。您需要爲每個表創建一個自定義模型。 createSite方法接受一個Site類型的對象,並將其作爲一行添加到DB中的TABLE_SITES中。 values.put(...)需要columnName,value。所以你在這裏給你自己的列名和值。

而是進入這一切的,我建議你使用像Android活躍的ORM: http://www.activeandroid.com/

1
public long createSite(Model site,String name, String address){ 
    SQLiteDatabase database = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 

    values.put(KEY_NAME, site.name); 
    values.put(KEY_ADDRESS, site.address); 

    // Insert Row 
    long siteid = database.insert(TABLE_SITES, null, values); 

將元素添加到了類,你只需要添加

public class Model { 
     String name; 
     String address; 
     //add year as many as you need 
     Model(String name, String address){ 
      this.name=name; 
      this.address=address; 
     } 


    } 

而且在你活動你打電話給這個 在java中添加一個新的對象在這種情況下Model

Model x = new Model("josh","Ireland"); 

,你只是傳遞給

dao.createTodo(x); 
+3

如果你不打算使用它並且只是單獨傳遞String值,那麼擁有該模型有什麼意義呢? – Mo1989

+0

是的,他可以創建一個模型,但如果他問如何傳遞元素,是因爲我不想創建一個對象。 – JMR

+0

「網站」是模型。他只需要添加變量。 – Mo1989

相關問題