- Sql server and android
- Connecting to SQL Server from Android and iOS in Direct Mode Using SDAC
- Design-time
- Setting up Direct Mode for Android
- Application execution in Direct Mode on Android
- Setting up Direct Mode for iOS
- Application execution in Direct Mode on iOS (Simulator)
- Application execution in Direct Mode on iOS Device
- DAC Team
- Latest posts by DAC Team (see all)
- 7 Responses to “Connecting to SQL Server from Android and iOS in Direct Mode Using SDAC”
- Превращение Android телефона в сетевую SQL базу данных (MyMobileSQLServer — Utesov)
- Android. Работаем с MS SQL без посредников
Sql server and android
Новые темы необходимо создавать только в корневом разделе! В дальнейшем они будут обработаны модераторами.
Если Вы выложили новую версию программы, пожалуйста, сообщите об этом модератору нажав на вашем сообщении кнопку «Жалоба».
Client for MySQL, MsSQL.
версия: 3.0.2
Последнее обновление программы в шапке: 21.06.2016
Краткое описание:
Позволяет удаленно подключаться к MySQL, Microsoft SQL, Sybase и серверам PostgreSQL прямо с Вашего телефона или планшета.
Описание:
Connect2SQL is an all-in-one MySQL client, SQL Server client, Sybase client, and Postgres client for Android. It allows you to remotely connect to MySQL, Microsoft SQL, Sybase, and PostgreSQL servers directly from your phone or tablet. Execute any command with the help of basic SQL syntax highlighting and view the results in a fully scrollable grid. Save commonly used SQL statements and review the history of SQL statements executed.
This application works as a.
MySQL Client
SQL Server Client (Microsoft SQL)
Sybase Client (ASE only)
Postgres Client
FEATURES
— Full execution availability
— Quick keys [shortcuts]
— Save queries per connection
— History of queries executed
— Placeholders for dynamic saved queries
— Scrollable results with clipboard copy
— Basic SQL syntax highlighting
— Multiple ResultSet compatible
— Built in pagination
CAUTION: Use app with care. It does not have limitations on such commands as DROP, TRUNCATE, DELETE, etc. Anything you do will be done directly on the server. If you are not sure how, what, who, SQL is. this tool is probably not for you.
Требуется Android: 4.0+
Русский интерфейс: Нет
Источник
Connecting to SQL Server from Android and iOS in Direct Mode Using SDAC
Using SDAC in Direct Mode for access to SQL Server from iOS and Android platforms doesn’t significantly differ from the one on Mac OS X or Windows platforms. Let’s see how this works in a sample below for RAD Studio XE7.
Note: those, who have already read our previous article Connecting to SQL Server on Mac OS X in Direct Mode Using SDAC can skip the description of creating a new project and move on to the Project configuration for Android and iOS platforms step.
Design-time
Let’s create a new Android / iOS application, that will work with SQL Server. For this, in the File|New menu select Multi-Device Application – Delphi.
In the appeared dialog select Blank Application.
Place the TMSConnection component onto the form, which will be named as MSConnection1. Set up the MSConnection1 component by setting the Options.Provider ProviderName property to prDirect. Open MSConnection1 editor and fill in the required properties: Server, Port, Authentication (the SQL Server value), Username, Password and Database.
MSConnection1 settings for Direct Mode have been done.
Now we just have to write event handlers for the Connect and Disconnect buttons:
Setting up Direct Mode for Android
When developing Android applications working with SQL Server in Direct Mode, SDAC doesn’t require any additional settings for deployment and execution. For my sample, I have just selected Target Platform – Android and a device.
Application execution in Direct Mode on Android
In RAD Studio press F9 and in a few seconds get the application running on Android, that works with SQL Server in Direct Mode with the help of SDAC.
Setting up Direct Mode for iOS
When developing iOS applications working with SQL Server in Direct Mode, SDAC doesn’t require any additional settings for deployment and execution. For my sample, I have just selected Target Platform – iOS and a device.
Application execution in Direct Mode on iOS (Simulator)
The application running on iOS Simulator looks like the following.
Application execution in Direct Mode on iOS Device
And finally a screenshot of running application on an iOS device
In such a way, we have demonstrated how easy to use SDAC functionality – Direct Mode for SQL Server when developing applications for Android and iOS. The source code of this demo can be found in the SDAC Demo folder on your PC.
DAC Team
Latest posts by DAC Team (see all)
- The Industry Leader Again: Devart ODBC Drivers are Awarded the G2 High Performer and GetApp Category Leader 2021 — November 5, 2021
- Delphi DAC for Firebird 4: Using the new INT128, DECFLOAT, and large NUMERIC types — October 5, 2021
- EntityDAC for RAD Studio 11 Alexandria — September 29, 2021
7 Responses to “Connecting to SQL Server from Android and iOS in Direct Mode Using SDAC”
plez
can u show me how 2 deploy this code step by step
pleeeeez
Hello, FAhd!
To get familiar with Direct Mode work in SDAC open the demo project included in the samples supplied with SDAC – [SDAC install folder]\Demos\Mobile . Then using Project Manager select the required platform, go to the menu item “Project” and select “Deploy”
Hi, I’m trying to create a first mobil app by using sdac MSConnection and MSQuery. Unfortunatelly I can not find any DBGrid component to present the selected data. Is there no DBGRID component available for mobile apps?
Hello, Jens!
Unfortunately, TCRDBGrid is a VCL component, therefore, you won’t be able to use it in FMX applications. To display tabular data, you can use the TGrid component from a standard set of FMX components.
We are contemplating to buy SDAC. In fact, we already have downloaded trial version for Delphi XE6, however the component works fine with Android 4 but it doesn´t work in other versions such Android 7. Are there any solution about that?
Unfortunately, RAD Studio XE6 does not support Android 7.0 (API Level 24), you can read more about compatibility of RAD Studio XE6 with Android by the following link:
Источник
Превращение Android телефона в сетевую SQL базу данных (MyMobileSQLServer — Utesov)
Недавно я начал делать очередной проект для мобильных устройств. Его побочным продуктом стало приложение, с помощью которого можно развернуть сетевую базу данных на любимом Android телефоне, планшете и т.п… Предлагаемое решение является сетевым провайдером SQLite базы данных.
Приложение многопользовательское, каждый пользователь имеет свою БД, которая недоступна другим пользователям. Код открытый, лицензия Apache 2.0.
Для демонстрации заявленных возможностей написано простое приложение которое позволяет делать SQL запросы на сервер и получать результаты их выполнения, его код рассмотрим здесь. Время освоения — 10 минут. Для тестирования достаточно одного устройства (если используется два и более, то необходимо WiFi подключение). Поехали!
Кадр из к\ф «Весёлые ребята» (доработанный)
Прежде всего устанавливаем приложение (сервер) MyMobileSQLServer — Utesov из PlayMarket, Yandex.Store или из репозитория. Далее необходимо создать пользователя для доступа к данным и саму базу данных. Для этого на главном экране выберите «edit user» -> «Add user». Заполняйте поля формы. После возвращайтесь на главный экран приложения и запускайте его с помощью кнопки «on». Обратите внимание на порт и IP адрес для подключения.
Перейдем к непосредственному созданию приложения для доступа к сетевой БД.
1 — Создаем новый проект. Копируем файл библиотеки «myMobileSQLClient.jar» в директорию для хранения библиотек и делаем необходимые действия, чтобы она стала доступна для проекта
2 — Настраиваем манифест проекта, добавляем директиву для возможности использования подключения к сети:
3 — Кидаем на форму:
пять полей ввода: IP адрес, номер порта, текст для sql запроса, логин, пароль;
три кнопки: подключиться, отключиться, отправить запрос;
поле для вывода информации.
У вас должно получиться примерно так:
Копируем следующий код с необходимыми корректировками:
Теперь разберемся что происходит.
За работу с удаленной БД отвечает данный объект:
MainMobileSQLClient mainMobileSQLClient;
В нём переопределены следующие методы:
onMessage — пришло сообщение с сервера;
onConnection — клиент осуществляет подключение к серверу;
onConnect — клиент подсоединился к серверу;
onDisconnect — клиент отсоединился от сервера;
onErrAuthentication — ошибка аутентификации;
onCompleteAuthentication — аутентификация прошла успешно;
При создании главного объекта задается IP адрес сервера и порт для подключения. Запуск клиента осуществляется с помощью метода startClient(). Начало подключения сопровождается методом onConnection. Если произошла ошибка подключения, то вызывается метод onDisconnect, который также вызывается при отключении клиента от сервера (например при разрыве соединения или отключении сервера). Если всё произошло в штатном режиме, то завершение процесса подключения ознаменует метод onConnect.
Далее необходимо произвести регистрацию пользователя на сервере, лучше всего делать это после окончания подключения, прямо в методе onConnect:
В случае успеха аутентификации, будет вызван метод onCompleteAuthentication, иначе onErrAuthentication. Если аутентификация не произошла, то скорее всего ваши логин и пароль не совпадают с теми, которые были зарегистрированы на сервере.
Теперь дело остается за малым — делать запросы и обрабатывать реакцию на приходящие данные.
Чтобы инициировать SQL запрос, необходимо вызвать метод (пример):
String id_request = mainMobileSQLClient.sendSQLRequest(»select * from test;»);
Он, в свою очередь, возвратит идентификатор запроса в виде текстовой строки. Это важно, так как это сетевое приложение, оно работает асинхронно. Когда с сервера приходит новый ответ, то вызывается метод onMessage(String id, DATA_parser data), который передает идентификатор запроса (id), на который пришел ответ и сами данные (data). Данные предоставляются в виде объекта DATA_request, в котором имеются следующие объекты:
status — String — статус результата запроса данных, если «ok», то запрос отработан удачно, иначе «err» (в дальнейшем статусы возможно будут пополняться);
recordsCount — int— количество записей пришедших от сервера, являющиеся результатом запроса;
structure — String[] — текстовый массив, являющийся перечислением названий всех полей ответного запроса;
listData — ArrayList — список массивов данных. Количество элементов в списке соответствует количеству записей с сервера. В каждом элементе находится текстовый массив, с количеством элементов равным количеству элементов в массиве structure.
Корректность обработки каждого запроса пока что ложится на плечи программиста, т.е. придется отслеживать каждый пришедший ответ с сервера и сравнивать его с идентификаторами в таблицах запросов, которые необходимо вести. Зато данное решение дает разработчику полную свободу и контроль в обработке всех результатов приходящих с сервера.
Всё готово! Теперь приступайте к тестированию, отправляйте любые SQL запросы на сервер (создание таблиц, вставка/модификация данных, удаление записей и т.д.) и получайте соответствующие результаты выполнения.
Репозиторий с сервером, клиентом, библиотекой и примером приложения — https://github.com/gc986/MyMobileSQLServer_Utesov
(В настоящее время в репозитории находится самая первая версия проекта подготовленная в формате ADT Eclipse. Следующим этапом станет перевод проекта под формат AndroidStudio)
Вопрос к хабраудитории: где можно применить данное решение?
Источник
Android. Работаем с MS SQL без посредников
Предупреждение:
Вообще говоря, информация из статьи применима только для некоторых специфических случаев. Например, когда приложение работает внутри какого-то сегмента изолированной сети. А в общем случае посредник, коим является http-сервер, всё-таки нужен. Хотя бы потому, что при описанном методе логин/пароль доступа к базе зашиты в приложении и передаются по сети.
Статья является продолжением работы, о которой писал в своём предыдущем посте. Изначально эту часть писать не хотелось (см. предупреждение), но на хабре данная тема ещё не освещена, и в целом в сети меньше информации.
Поэтому, если Вам интересно, как можно из под Android напрямую работать с MS SQL (логично предположить, что и с другими БД, но на практике я этого не делал), добро пожаловать под кат.
В Java (и Android соответственно) соединение с удалёнными БД происходит при помощи JDBC-драйверов. В моём конкретном случае сервер майкрософтовский, и для него существует два драйвера: от Microsoft и открытая альтернатива JTDS. Причём последний, по заверениям разработчиков, работает быстрее и стабильней официального. Вот его и будем использовать.
Грабли: Актуальная версия JTDS на дату написания поста — 1.3.1. Но начиная с версии 1.3.0 драйвер переписан для совместимости с Java 7, и в сети встречаются сообщения о проблеме работы этих версий в Android. Поэтому необходимо использовать последнюю стабильную версию ветки 1.2.* (1.2.8), которая для Java 6.
На SQL-сервере должна быть настроена работа через TCP/IP.
Получение данных
Данные запросов драйвер возвращает в интерфейсе ResultSet который похож на андроидный Cursor, но быстрого способа приведения ResultSet к курсору я не нашёл. Поэтому поступим по-другому, данные из ResultSet будут конвертироваться в массив JSONArray и возвращаться в основную логику приложения, откуда с ними можно будет делать что угодно.
Весь обмен данными, как потенциально продолжительную операцию, будем делать асинхронно. В итоге получается примерно такой симпатичный класс для запросов к MS SQL:
EDIT: Переписал закрытие Connection, Statement и ResultSet в примерах в соответствии с основами.
На вход классу подаётся запрос, на выходе — готовый JSONArray, как если бы мы получали данные от веб-сервера. В отдельном потоке AsyncTask соединяется с сервером, получает данные в ResultSet и формирует из них JSON. Думаю, в целом код примитивен и в пояснениях не нуждается.
Для построения систем, работающих по подобному принципу, лучше передавать на вход не чистые select-запросы, а написать на сервере готовые T-SQL функции, передавая параметры к которым, можно получать нужные выборки.
Insert и Update. Передача данных на сервер
К сожалению, тут я не придумал ничего лучше, просто выполнение Insert-ов в транзакции. В прочем, метод отлично работает, вставка нескольких сотен записей занимает приемлемое время (около секунды на 100 строк, полей в реальном проекте больше, чем в приведённом примере).
EDIT: по совету eyeless_watcher использую метод addBatch() при заполнении PreparedStatement. Вот теперь вставка данных выполняется на самом деле быстро, в одной транзакции. Пример изменил.
Для вставки нужных значений используется PreparedStatement. Нумерация полей в нём почему-то начинается с единицы (см. документацию). А в остальном — всё должно быть понятно. update можно реализовать схожим образом, аналогично используя executeUpdate.
Приведённый подход был использован мной в «боевом» приложении первый раз.
На практике оказалось, что он стабильно работает. Время соединения с БД иногда может занимать несколько секунд (подключаюсь по wi-fi, сервер общий на всё предприятие), но сами транзакции выполняются быстро.
Источник