• 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

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

вы же говорите, у вас есть сервер в сети? сделайте там просто обычные 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

Работает всё

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

 


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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу