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, Значит надо брать нормальный хост и ставить базу туда.
|
|
| |