IPad SQLite Push и Pull данных из внешней базы данных MS SQL Server - PullRequest
0 голосов
/ 16 ноября 2010

Это продолжается из моего предыдущего поста (/3780617/ipad-app-tyanut-i-tolkat-relyatsionnye-dannye). Мой план состоит в том, чтобы при запуске приложения ipad я собирал данные (данные конфигурации, например, отделы, типы и т. Д., И реляционные данные, используемые в системе) из веб-хостинга. MS SQL Server DB через веб-сервис и заполнить его в SQL Lite DB на IPad. Затем, когда я загружаю листинг, я снова перетаскиваю данные через линию через веб-сервис и заполняю их в базу данных SQL Lite на ipad (чем просто запустите команды выбора, чтобы заполнить список).

Мои вопросы: 1. Каков наиболее эффективный способ передачи данных через Интернет через Интернет? Все, кажется, делают это по-своему. Моя идея заключается в том, что у меня будет веб-сервис для каждого типа извлечения данных (например, RetrieveContactListing), который будет запрашивать БД и затем преобразовывать эти данные в «что-то» для отправки через линию. Мой вопрос на самом деле заключается в том, что является «чем-то», в которое оно должно преобразовываться? 2. Все говорят об услугах по передаче данных. Подходит ли это для приложений, где требуется сложное чтение и запись?

Я создал простое приложение для iphone, которое до этого разговаривало с базой данных sql server (я только что отправил свой структурированный xml через линию), но теперь с этим приложением вызовы данных будут намного больше, поэтому эффективность является ключевым фактором.

Ответы [ 2 ]

0 голосов
/ 25 октября 2014

Я бы посоветовал, чтобы ваш код на стороне сервера возвращал JSON, а не XML, поскольку с iOS это проще работать.(и относительно прост в настройке на стороне сервера)

Также из приложения отправьте поле заголовка, содержащее дату, когда приложение последний раз запрашивало данные, и получите код на стороне сервера, чтобы возвращать только измененные данныес этой даты.Используйте столбец даты на SQL Server, чтобы хранить записи об обновленных строках.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL]];
[request setValue:lastCallTime forHTTPHeaderField:@"If-Modified-Since"];

lastCallTime - это запись из NSDictionary, которая содержит Date из заголовка ответа ...

[response allHeaderFields][@"Date"]

Вот статья о том, как получить значение If-Modified-Since на сервере, http://madskristensen.net/post/use-if-modified-since-header-in-aspnet

, которое затем можно использовать в своих запросах

OneПоследнее, что нужно сделать, это также убедиться, что сервер возвращает сжатые данные, так как это поможет повысить производительность, и iOS распаковывает их по умолчанию при получении

0 голосов
/ 16 ноября 2010

Я дам свой «стандартный» ответ для этого типа вопроса (который всегда получает хорошие оценки) - немного поработал над вашей конкретной проблемой:

Забудьте о том, что вы «двигаете записи»из одной базы данных в другую ".Вы действительно просто читаете данные из одной базы данных - отправляете их по сети - анализируете - и записываете их в базу данных iPhone.

Для этого:

  1. На вашем веб-сервере, на котором работает сервер MS SQL, напишите веб-страницу (perl, ASP, все, что вы хотите), которая на основе какого-либо веб-запроса (или нет), считывает соответствующее содержимое из базы данных MS SQL и выводит ее в формате XML .

  2. На вашем iPad используйте класс NSXMLParser для запроса и анализа данных XML. хорошая вещь в NSXMLParser заключается в том, что он выполняет всю работу по фактическому открытию HTTP-соединения, извлечению данных через сеть и синтаксическому анализу XML всего за один вызов :1021 *

    • (id) initWithContentsOfURL: (NSURL *) url
  3. Используйте вызовы NSXMLParser для получения необходимых данных из проанализированного XML-документа изапишите его в локальную базу данных iPhone со стандартными службами Core Data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...