2015-02-24 2 views
0

У меня есть sqlite, реализованный в моем проекте xcode. Он получает свои данные от UITextField. Существует texField, который добавляется программно каждый раз, когда пользователь нажимает button. Я буду воссоздать «тот же» textField. (Вид.) Как я могу получить данные textField's в файл sqlie?Добавить Программируемый текст textField в базу данных sqlite

SQLite Созданный в Терминале

CREATE TABLE myDB(myDBID integer primary key, first text, second text); 

Objective C

NSString *query = [NSString stringWithFormat:@"insert into myDB values(null, '%@', '%@')", self.textView1.text, self.textView2.text]; 
[self.dbManager executeQuery:query]; 

//IBAction: 
UITextField *text = [[UITextField alloc] initWithFrame:frame]; 
[self.view addSubview:text]; 

Как я могу добавить программно добавил textField's текст в базу данных sqlite?

Update

В основном TextFields добавляются программно с IBAction. То, что я пытаюсь сделать, - получить текст textFields и добавить его в sqlite. Я не могу просто добавить его следующим образом:

@"insert into myDB values(null, '%@', '%@')", self.textView1.text, self.textView2.text]; 

, потому что я не знаю, сколько TextFields там будет, и поэтому я не знаю, сколько полей я должен создать в SQLite. (Поля значения - первый текст, второй текст

+0

?? Вы извлекаете данные из текстового поля и делаете INSERT или UPDATE в БД. Что за вопрос?? –

+0

Я не знаю, сколько текстовых полей будет, так что я могу сделать для файла sqlite? В файле sqlite есть 2 текстовых ввода («первый текст, второй текст»). –

+0

Мне кажется, что этот вопрос не имеет ничего общего с текстовыми полями. Мы не знаем, что вы делаете с данными, которые вы вложили в файл SQLite, поэтому мы не можем советовать вам, как вставить его. –

ответ

-1

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

NSMutableString *query = [[NSMutableString alloc] initWithString:@"insert into myDB values(null"]; 

for (id subview in self.view.subviews) { 
    if ([subview isMemberOfClass: NSClassFromString(@"UITextField")]) { 
     UITextField *temp = subview; 
     [query appendFormat:@", '%@'", temp.text]; 
    } 
} 
[query appendString:@")"]; 
[self.dbManager executeQuery:query]; 

Редактировать

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

+0

Я не знаю, сколько текстовых полей будет, так что мне делать с sqlite-файлом? В файле sqlite есть 2 текстовых ввода («первый текст, второй текст»). –

+0

вы можете сделать ** ALTER TABLE table_name ADD column_name datatype **, чтобы соответствовать количеству текстовых полей, но я бы этого не сделал. Я бы установил верхний максимум для количества текстовых полей, которые они могут иметь, и у вашей таблицы SQL есть место для всех из них, чтобы оно было согласованным. – Chase

+0

@Chase - Вы, конечно же, не должны пытаться динамически изменять таблицу (даже если бы могли, чего вы не можете). Проблема должна быть продумана до создания базы данных. –

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