Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


b_vlad25

Вопрос

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

Изменено пользователем b_vlad25
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

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

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

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

Ссылка на комментарий
  • 0

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

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

Ссылка на комментарий
  • 0

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

Изменено пользователем b_vlad25
Ссылка на комментарий
  • 0
3 минуты назад, b_vlad25 сказал:

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

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

Ссылка на комментарий
  • 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
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

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

Любой 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
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

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