2014-12-04 4 views
-2

Я делаю проект, и я структурирован в пути базы данных. Я использую базу данных sqlite для хранения. В этом мои проблемы - это когда я обновляю таблицу, в которой отображается ошибка. Для части базы данных я использую предварительно написанные классы. Я называю этот метод класса всякий раз, когда мне нужно. Ниже вы можете понять.получение ошибки обновления sqlite

Это ниже код работает отлично

[DataCachingHelper updateTable:@"sendertable" data:dic3 where:@"MESSAGE_ID='1234'"]; 

но когда я посылаю объект в «где», он показывает некоторые ошибки.

[DataCachingHelper updateTable:@"sendertable" data:dic3 where:@"MESSAGE_ID=%@",@"hai"]; 

я получаю сообщение об ошибке:

"too many arguments to methods call expected 3,have 4". 

здесь MESSAGE_ID является VARCHAR TYPE

+0

Каков тип данных 'MESSAGE_ID'? и какая ошибка, которую он дает при отправке '@" MESSAGE_ID = '1234''? –

+0

@Virussmca MESSAGE_ID - это varchartype –

ответ

0

Вопрос здесь ясен. Вы не можете передать строковый формат, потому что компилятор компилирует параметр перед преобразованием в строковый формат. Из вашего объявления метода допустимые параметры должны быть равны 3.

Таким образом, параметр компилятора обнаруживает 4 при передаче строки с форматом.

Также в базе данных sqlite для полей типа VARCHAR используются двойные кавычки для значений полей.

Так что ваша строка должна выглядеть так:

NSString *whereClauseString = [NSString stringWithFormat:@"MESSAGE_ID = \"%@\"",@"hai"]; 

Или, если значение предварительно известно просто создать строку, как это:

NSString *whereClauseString = @"MESSAGE_ID = \"hai\""; 

И затем использовать эту строку в качестве третьего параметра для updateTable метода:

[DataCachingHelper updateTable:@"sendertable" data:dic3 where:whereClauseString]; 
+0

спасибо за ответ –

0

сделать это в два этапа.

NSString *strWhere=[NSString stringWithFormat:@"MESSAGE_ID='%@'",@"hai"]; 

    [DataCachingHelper updateTable:@"sendertable" data:dic3 where:strWhere]; 
+0

, который я пробовал с одинарными кавычками, но я получаю ту же ошибку –

+0

что такое тип MESSAGE_ID в базе данных, int или строка –

+0

MESSAGE_ID ID - VARCHAR TYPE –

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