Sign in to follow this  
Followers 0
DEST

Учимся работать с SQLite (функции)

1 post in this topic

Для начала следует определиться, а что такое SQLite?

SQLite - это встраиваемая кроссплатформенная БД, которая поддерживает достаточно полный набор команд SQL и доступна в исходных кодах (на языке C).

Ну а теперь перейдем к функциям:

Спойлер

Данная фукция открывает указанную базу данных.

Пример использования:


// Открываем базу данных, находящуюся в файле "example.db"
new DB:db = db_open("example.db");  

 

 


Спойлер

Данная функция закрывает указанную базу  данных.

Пример использования:


// Работа с БД завершена, закрываем ее для сохранения данных на диск
db_close(db);

 

 


Спойлер

Посылает SQL-запрос указанной базе данных.

Пример использования:


new DB:db = db_open("example.db");
 
db_query(db, "CREATE TABLE users (name VARCHAR(24), kills INTEGER, deaths INTEGER, money INTEGER)");
db_query(db, "INSERT INTO users VALUES('Vasya_Pupkin', 100, 50, 300000)");
 
db_close(db);

 

 


Спойлер

Удаляет из памяти результат того или иного запроса к БД, выполненного посредством db_query.

Пример использования:


new DB:db = db_open("example.db");
new DBResult:dbresult;
  
dbresult = db_query(db, "SELECT * FROM my_table ");
  
// Далее следуют какие-то манипуляции с данными
// ...
  
db_free_result(dbresult);
  
db_close(db); 

 

 


Спойлер

Позволяет узнать количество строк результата запроса.

Пример использования:


new DB:db = db_open("example.db");
new DBResult:dbresult;
new rows;
  
dbresult = db_query(db,"SELECT * FROM my_table");
rows = db_num_rows(dbresult);
printf("В таблице %d строк", rows);
  
db_free_result(dbresult);
db_close(db);  

 

 


Спойлер

Позволяет узнать количество полей результата запроса.

Пример использования:


new DB:db = db_open("example.db");
new DBResult:dbresult;
new fields;
  
dbresult = db_query("SELECT * FROM my_table");
fields = db_num_fields(dbresult);
printf("В таблице %d полей", fields);
  
db_free_result(dbresult);
db_close(db);

 

 


Спойлер

Выполняет переход к следующей строке результата SQL-запроса.

Пример использования:


public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp(cmdtext, "/topkillers", true, 11))
    {         
        new DB:userdb;
        new DBResult:result;
        new message[50];
        userdb = db_open("users.db");
        result = db_query(userdb, "SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 10");
        SendClientMessage(playerid, 0x00FFFFFF, " Топ 10 игроков по количеству убийств:");
        for (int i; i < 10; i++)
        {
            db_get_field_assoc(result, "name", message, sizeof(message));
            format(message, sizeof(message), "   %d. %s", i + 1, message);
            SendClientMessage(playerid, 0xFFFFFFFF, message);
            db_next_row(result);
        }
        db_free_result(result);
        db_close(userdb); 
        return 1;
    }
    return 0;
}

 

 


Спойлер

Позволяет узнать название поля результата по его порядковому номеру.

Пример использования:


new DB:userdb = db_open("users.db");
new DBResult:dbresult;
new fields;
new name[30];
  
dbresult = db_query(userdb, "SELECT * FROM `users`");
fields = db_num_fields(dbresult);
  
// Выводим названия всех полей таблицы 'users'
for (new i; i < fields; i++)
{
    db_field_name(dbresult, i, name, sizeof(name));
    printf("поле №%d: %s", i, name);
}
  
db_free_result(dbresult);
db_close(userdb);

 

 


Спойлер

Позволяет узнать содержимое поля результата по его порядковому номеру.

Пример использования:


public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp(cmdtext, "/stats", true, 6))
    {
        new DB:userdb = db_open("users.db");
        new DBResult:dbresult;
        new name[MAX_PLAYER_NAME];
        new buffer[100];
  
        GetPlayerName(playerid, name, MAX_PLAYER_NAME);
        format(buffer, sizeof(buffer), "SELECT `kills`,`deaths`,`money` FROM `users` WHERE name=lower('%s')", name);         
        dbresult = db_query(userdb, buffer);
  
        // Узнаем значения каждого из 3х запрошенных полей: kills, deaths, money
        // Их нумерация начинается с нуля
        db_get_field(dbresult, 0, buffer, sizeof(buffer));
        format(buffer, sizeof(buffer), " Убийств: %d", strval(buffer));
        SendCLientMessage(playerid, 0x00FF00FF, buffer);
        db_get_field(dbresult, 1, buffer, sizeof(buffer));
        format(buffer, sizeof(buffer), " Смертей: %d", strval(buffer));
        SendCLientMessage(playerid, 0x00FF00FF, buffer);
        db_get_field(dbresult, 2, buffer, sizeof(buffer));
        format(buffer, sizeof(buffer), " Всего денег: %d", strval(buffer));
        SendCLientMessage(playerid, 0x00FF00FF, buffer);
  
        db_free_result(dbresult);
        db_close(userdb);
    }
}

 

 


Спойлер

Позволяет узнать содержимое поля результата по его имени.

Пример использования:


public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp(cmdtext, "/topkillers", true, 11))
    {         
        new DB:userdb;
        new DBResult:result;
        new message[50];
        userdb = db_open("users.db");
        result = db_query(userdb, "SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 10");
        SendClientMessage(playerid, 0x00FFFFFF, " Топ 10 игроков по количеству убийств:");
        for (int i; i < 10; i++)
        {
            db_get_field_assoc(result, "name", message, sizeof(message));
            format(message, sizeof(message), "   %d. %s", i + 1, message);
            SendClientMessage(playerid, 0xFFFFFFFF, message);
            db_next_row(result);
        }
        db_free_result(result);
        db_close(userdb); 
        return 1;
    }
    return 0;
}

 

На этом все! Автор: samp-wiki & Amfy

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Раксон Фаркрай
      By Раксон Фаркрай
      SAMP CEF
      Просмотр файла cef_create_browser(player_id, browser_id, const url[], hidden, focused)
      Создает браузер для указанного игрока.
      cef_destroy_browser(player_id, browser_id)
      Удаляет браузер.
      cef_hide_browser(player_id, browser_id, hide)
      Скрывает браузер.
      cef_emit_event(player_id, const event_name[], args…)
      Вызвать событие у клиента. Поддерживаемые типы аргументов: string, integer, float.
      cef_subscribe(const event_name[], const callback[])
      Подписаться на событие от клиента. Сигнатура функции колбека: Callback(player_id, const arguments[])
      cef_player_has_plugin(player_id)
      Проверка на наличие плагина у клиента.
      cef_create_ext_browser(player_id, browser_id, const texture[], const url[], scale)
      Создает браузер как и в первом случае, но с пометкой, что он будет отображаться на объектах на определенной текстуре. Параметр scale указывает во сколько раз нужно увеличить стандартную текстуру. Например, если стандартная текстура имеет размер 250x30 будет иметь размер 1250x150 при переданном параметре в 5 единиц.
      cef_append_to_object(player_id, browser_id, object_id)
      Заменяет текстуру переданного объекта на изображение браузера у клиента. Браузер должен быть создан с помощью cef_create_ext_browser, а так же должна присутствовать текстура, указанная при создании, для корректного отображения.
      cef_remove_from_object(player_id, browser_id, object_id)
      Возвращает оригинальную текстуру объекта.
      cef_toggle_dev_tools(player_id, browser_id, enabled)
      Включает / выключает инструменты разработчика.
      Добавил Раксон Фаркрай Добавлено 27.07.2021 Категория Плагины / инклуды Автор ZOTTCE Совместимость с версией мультиплеера ALL  
    • Раксон Фаркрай
      By Раксон Фаркрай
      cef_create_browser(player_id, browser_id, const url[], hidden, focused)
      Создает браузер для указанного игрока.
      cef_destroy_browser(player_id, browser_id)
      Удаляет браузер.
      cef_hide_browser(player_id, browser_id, hide)
      Скрывает браузер.
      cef_emit_event(player_id, const event_name[], args…)
      Вызвать событие у клиента. Поддерживаемые типы аргументов: string, integer, float.
      cef_subscribe(const event_name[], const callback[])
      Подписаться на событие от клиента. Сигнатура функции колбека: Callback(player_id, const arguments[])
      cef_player_has_plugin(player_id)
      Проверка на наличие плагина у клиента.
      cef_create_ext_browser(player_id, browser_id, const texture[], const url[], scale)
      Создает браузер как и в первом случае, но с пометкой, что он будет отображаться на объектах на определенной текстуре. Параметр scale указывает во сколько раз нужно увеличить стандартную текстуру. Например, если стандартная текстура имеет размер 250x30 будет иметь размер 1250x150 при переданном параметре в 5 единиц.
      cef_append_to_object(player_id, browser_id, object_id)
      Заменяет текстуру переданного объекта на изображение браузера у клиента. Браузер должен быть создан с помощью cef_create_ext_browser, а так же должна присутствовать текстура, указанная при создании, для корректного отображения.
      cef_remove_from_object(player_id, browser_id, object_id)
      Возвращает оригинальную текстуру объекта.
      cef_toggle_dev_tools(player_id, browser_id, enabled)
      Включает / выключает инструменты разработчика.
    • Джеймс
      By Джеймс
      Здравствуйте Ув.Участиники PAWNO-RUS,
      Столкнулся с проблемой - *Транспорт сломанный при загрузке на сервер* То есть загружаешь Т.С после покупки с 50% состоянии
      С исправлением затрудняюсь, может вы можете как то помочь.
      Заранее спасибо!