• 0
b_vlad25

Подключение из приложения под Андроид к удаленной БД сайта MySQL в С++ Builder XE

Вопрос

Вообще до этого писал только стандартные приложения на С++ Builder. Сейчас пробую написать приложение под Android. Есть на нашем сайте база клиентов которая постоянно обновляется.В приложении клиент введя свой лицевой счет входит в БД и получает свои данные по задолженности. В обычном приложении с этим нету проблем коннектится через ADO ODBC, а вот под Андроид как лучше и правильнее сделать не знаю. Информацию и компоненты все дают разную. Может есть какие то примеры для образца или литература Заранее спасибо...

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

35 ответов на этот вопрос

  • 0

в очередной раз. прямое подключение к БД на мобильных системах - неправильно

нужно иметь "где-то там" промежуточный сервер. на php или еще какой, может Datasnap

на нем будет подключение к БД, а запросы и ответы к нему и обратно будут ходить по HTTP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Согласен на все, только где можно почитать как все это организовывается. С серверами и компонентами не работал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

https://www.google.ru/search?q=delphi+multi+tier+application&oq=delphi+multi+tier+application

даже включая видео

Изменено пользователем krapotkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А сервер Datasnap где должен размещаться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

там, где у него будет прямой доступ к БД и там где к нему будет прямой доступ из интернета

вы же говорите, у вас есть сервер в сети? сделайте там просто обычные php скрипты для работы. или на чам там он у вас написан...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Почему вы на сайте не ищите ответ, а сразу создаете еще одну ветку форума?

 

Изменено пользователем Vitaldj

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Кто-нибудь пробовал запустить скрипт php c запросом и получить значения в С++ через TNetHTTPClient. Раньше им никогда не пользовался. Кто-нибудь может помочь простым примером get и post.

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
3 минуты назад, b_vlad25 сказал:

Кто-нибудь пробовал запустить скрипт php c запросом и получить значения в С++ через TNetHTTPClient. Раньше им никогда не пользовался. Кто-нибудь может помочь простым примером get и post.

Язык здесь не причем. Посмотрите примеры, которые есть выше по ссылке. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Делаю так:

String URL = "http://www.domofonkg.com/1.php?id=" + Edit1->Text;
Memo1->Text=NetHTTPClient1->Get(URL)->ContentAsString();

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
30 минут назад, b_vlad25 сказал:

Делаю так:

String URL = "http://www.domofonkg.com/1.php?id=" + Edit1->Text;
Memo1->Text=NetHTTPClient1->Get(URL)->ContentAsString();

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

а ты в урле не ошибся? Если в браузер забиваешь эту ссылку, что то показывается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 час назад, Vitaldj сказал:

а ты в урле не ошибся? Если в браузер забиваешь эту ссылку, что то показывается?

Да там все работает.

Без имени-3.png

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Вот сам скрипт php:

<?php
//Sample Database Connection Syntax for PHP and MySQL.

//Connect To Database

$hostname="176.126.167.134";
$username="mmmmmmmmmm";
$password="000000000000";
$dbname="domofonkg";
$usertable="internetshop_users";
$yourfield = "mail_index"; //лицевой счет
$yourfield1 = "address_of_delivery"; //адрес
$yourfield2 = "fax";  //тариф 
$yourfield3 = "country_id"; //абонплата
$yourfield4 = "url"; //льгота
$yourfield5 = "phone"; //долг
$yourfield6 = "company"; //статус
$yourfield7 = "icq"; //дата 
$zapros = $_GET['id'];

$link = mysql_connect($hostname,$username, $password) or die ("<html><script language='JavaScript'>alert('Ошибка соединения с базой! Пожалуйста попробуйте позже.'),history.go(-1)</script></html>");
mysql_set_charset('cp1251',$link);// твоя кодировка, чтобы сервер тебя  правильно понял
mysql_select_db($dbname);

# Check If Record Exists

$query = "SELECT mail_index, address_of_delivery, fax, country_id, url, phone, company, icq FROM $usertable WHERE $yourfield = $zapros";

$result = mysql_query($query);

if($result)
{
 while($row = mysql_fetch_array($result, MYSQL_ASSOC))
 {
   printf ("%s; %s; %s; %s; %s; %s; %s; %s", $row["$yourfield"], $row["$yourfield1"], $row["$yourfield2"], $row["$yourfield3"], $row["$yourfield4"],   $row["$yourfield5"], $row["$yourfield6"], $row["$yourfield7"]);
 }
 mysql_free_result($result);
}
?>

 

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Если в браузере нужные данные показываются, то дело не в php. Значит ты что то в студии неправильно запрограммировал. К сожалению в си ничего не понимаю. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А вы в Делфи как запрограммировали, может разберусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Работает всё

Скрытый текст

 


procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := NetHTTPClient1.Get('http://www.domofonkg.com/1.php?id=1').ContentAsString(TEncoding.ANSI);
end;

59295b55b3a5e_5.png.1ed82e1864856541106938e5913b08f9.png

 

Другие сайты грузит, яндекс, гугл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Может библиотеки какие не подключил, вообще по сайтам ничего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
36 минут назад, b_vlad25 сказал:

Может библиотеки какие не подключил, вообще по сайтам ничего.

Что значит ничего? Покажите ошибку. Доступ в сеть для программы ничего не блокирует, антивирус например?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Антивирус уже отключал. При выполнении программы она подвисает, а потом выдает где-то через минуту:

First chance exception at $75FDC41F. Exception class ENetHTTPClientException with message 'Error sending data: (12002) Время ожидания операции истекло'. Process Project3.exe (8392)

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

вопрос повторный. другие сайты грузит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

нет. Я и говорю может в студии или проекте что-то не подключил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

ищите и отключайте фаерволлы

документация по TNetHttpClient вполне обширна

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Первый и обязательный шаг:

Любой String в С++ Builder должен предворятся литерой L.

String URL = L" http://www.domofonkg.com....";

Если этот первый пункт не работает, то двигаться дальше в поиске проблемы...

Изменено пользователем Ingalime

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Скажите две наклонные черты // перед текстом в результатах выполнения скрипта - это по умолчанию или можно убрать?

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
В 28.05.2017 в 14:59, b_vlad25 сказал:

Скажите две наклонные черты // перед текстом в результатах выполнения скрипта - это по умолчанию или можно убрать?

Нет, не по умолчанию, это косяк в скрипте. Я так понимаю запрос заработал, в чём же была проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Теперь получилась проблема с отправкой в скрипт запроса с текстом на кирилице.

Из Google Chrome отправляет нормально и ответ нормально приходит, а вот из программы никак не получается.

Изменено пользователем b_vlad25

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу