2016-01-23 5 views
0

Я создаю свое первое приложение с поддержкой данных, но борюсь с последней частью - фактически добавляя и извлекая данные. На данный момент я заинтересован только в добавлении данных в таблицу. После this tutorial Я создал классы моделей для своих таблиц и класс DBHelper со всеми моими методами CRUD (я могу опубликовать все это, если потребуется, но не уверен, что они необходимы для ответа на этот вопрос. Пожалуйста, поправьте меня, если я ошибаюсь!). К сожалению, учебник заканчивается здесь и не вдавался в подробности о том, как передавать данные из пользовательского интерфейса приложения в БД.Добавление данных в SQLite

После некоторых поисковых запросов Google я нашел пример того, как передавать некоторые данные этим методам, но только, как передавать один кусок данных за раз, поэтому только очень полезно, если в моей таблице есть только одно поле - мое больше чем один.

Например, если у меня есть таблица для задач «Todo», в моем dbhelper мой метод создания может быть;

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 на новый объект сайта. Это будет выглядеть в вашей деятельности.

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 and Site - это модели. Каждая переменная представляет собой столбец этой таблицы. Вам нужно создать пользовательскую модель для каждой из ваших таблиц. Метод createSite принимает объект типа Site и добавляет его как строку в TABLE_SITES в БД. values.put (...) принимает значение columnName, значение. Итак, здесь вы даете свои имена и значения столбцов.

Вместо того, чтобы во все это я предлагаю вам использовать ОРМ как активный андроида: 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 x = new Model("josh","Ireland"); 

и вы просто перейти к

dao.createTodo(x); 
+3

, в чем смысл иметь модель, если вы не собираетесь ее использовать и просто передаете значения String отдельно ...? – Mo1989

+0

Да, он может создать модель, но если он спрашивает, как передать элементы, это потому, что я не хочу создавать один объект. – JMR

+0

«Сайт» - это модель. Ему просто нужно добавить к нему переменные. – Mo1989

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