Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
MySql получение данных
TorresSs Дата: Среда, 27.04.2016, 10:47:24 | Сообщение # 1
Сообщений: 23
Репутация: 1 [ +/- ]
Здравствуйте.

Отправляем такой запрос:
Код
new String:szQuery[512];
Format(szQuery, 512, "SELECT %s FROM %s WHERE kay='%s';", arg, table, key_value);
SQL_TQuery(g_hDb, SQL_CheckGetCallback, szQuery, arg); // Отправляем туда arg для дальнейшего поиска ячейки в которой он находиться


В SQL_CheckGetCallback:
Код
new n = 0;
SQL_FieldNameToNum(hndl, arg, n); // получаем номер ячейки
SQL_FetchString(hndl, n, temp_info_for_bd, 500); // Получаешь данные с номера ячейки
PrintToChatAll("arg = %s", temp_info_for_bd);


Внимание вопрос. Если мы в запросе "Format(szQuery, 512, "SELECT %s FROM %s WHERE kay='%s';", arg, table, key_value);" уже указали arg то можно ли как-то обойтись в SQL_CheckGetCallback без передачи arg .... и обойтись без:

Код
SQL_FieldNameToNum(hndl, arg, n); // получаем номер ячейки
SQL_FetchString(hndl, n, temp_info_for_bd, 500); // Получаешь данные с номера ячейки
 
BarD Дата: Среда, 27.04.2016, 11:19:08 | Сообщение # 2
Сообщений: 943
Репутация: 137 [ +/- ]
Если запрос по получению одного значения, то можно просто:
Код
SQL_FetchString(hndl, 0, temp_info_for_bd, 500);


Вообще, если ты конкретно знаешь, какое это значение по порядку в запросе, то можно использовать цифры. Нумерация идет с нуля.

Например:
Код

Format(szQuery, 512, "SELECT `arg1`, `arg2`, `arg3` FROM %s WHERE key='%s';", table, key_value);

//В Callback

decl String:buf[500];
SQL_FetchString(hndl, 0, buf, 500); // из `arg1`
SQL_FetchString(hndl, 1, buf, 500); // из `arg2`
SQL_FetchString(hndl, 2, buf, 500); // из `arg3`


Сообщение отредактировал BarD - Среда, 27.04.2016, 11:19:36
 
TorresSs Дата: Среда, 27.04.2016, 12:24:55 | Сообщение # 3
Сообщений: 23
Репутация: 1 [ +/- ]
Спс. Если я отправляю 2 запроса, на UPDATE может ли быть такое что:

Запрос UPDATE который отправлялся последним придет 1 первым?

Добавлено (27.04.2016, 12:19:10)
---------------------------------------------
Проще говоря могут ли запросы как-то опережать друг друга при тех или иных обстоятельствах... (хотя они были отправлены в четком порядке)?

Добавлено (27.04.2016, 12:24:55)
---------------------------------------------
Еще одно: Как можно проверить установлено ли соединение с БД или же оно потеряно?)

 
BarD Дата: Среда, 27.04.2016, 13:29:40 | Сообщение # 4
Сообщений: 943
Репутация: 137 [ +/- ]
Если глобальный хэндл при подключении остается INVALID_HANDLE, то установить соединение не удалось.

Добавлено (27.04.2016, 13:29:40)
---------------------------------------------

Цитата TorresSs ()
Могут ли запросы как-то опережать друг друга при тех или иных обстоятельствах...

Скорее всего, нет. Ты ж их отправляешь в установленном порядке. А вот при получении может быть такое. Смотря, сколько данных получишь.
 
TorresSs Дата: Среда, 27.04.2016, 13:35:58 | Сообщение # 5
Сообщений: 23
Репутация: 1 [ +/- ]
Имеется введу что подключение изначально было и hMySql != INVALID_HANDLE
Если подключение внезапно теряется то hMySql мгновенно станвиться = INVALID_HANDLE?
 
BarD Дата: Среда, 27.04.2016, 13:54:11 | Сообщение # 6
Сообщений: 943
Репутация: 137 [ +/- ]
Цитата TorresSs ()
hMySql мгновенно становится = INVALID_HANDLE?

Нет. Да и вряд ли подключение вообще обрывается. Ни разу не было.
 
TorresSs Дата: Среда, 27.04.2016, 14:25:48 | Сообщение # 7
Сообщений: 23
Репутация: 1 [ +/- ]
Цитата BarD ()
Цитата TorresSs писал(а):
hMySql мгновенно становится = INVALID_HANDLE?

Нет. Да и вряд ли подключение вообще обрывается. Ни разу не было.


По идее у тебя локальная база? а если база лежит на левом компе и там инет потух?
 
Jon4ik Дата: Среда, 27.04.2016, 14:35:24 | Сообщение # 8
Сообщений: 278
Репутация: 7 [ +/- ]
TorresSs, Значит надо брать нормальный хост и ставить базу туда.
 
  • Страница 1 из 1
  • 1
Поиск: