A
Amfy
Гость
Гость
db_open - Открывает указанную базу данных SQLite.
// Открываем базу данных, находящуюся в файле "example.db"
new DB:db = db_open("example.db");
db_close - Производит закрытие базы данных и сохранение внесенных в нее изменений.
// Работа с БД завершена, закрываем ее для сохранения данных на диск
db_close(db);
db_query - Посылает 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_free_result - Удаляет из памяти результат того или иного запроса к БД, выполненного посредством 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);
db_num_rows - Позволяет узнать количество строк результата запроса.
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);
db_num_fields - Позволяет узнать количество полей результата запроса.
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);
db_next_row - Выполняет переход к следующей строке результата 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;
}
db_field_name - Позволяет узнать название поля результата по его порядковому номеру.
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);
db_get_field - Позволяет узнать содержимое поля результата по его порядковому номеру.
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);
}
}
db_get_field_assoc - Позволяет узнать содержимое поля результата по его имени.
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
// Открываем базу данных, находящуюся в файле "example.db"
new DB:db = db_open("example.db");
db_close - Производит закрытие базы данных и сохранение внесенных в нее изменений.
// Работа с БД завершена, закрываем ее для сохранения данных на диск
db_close(db);
db_query - Посылает 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_free_result - Удаляет из памяти результат того или иного запроса к БД, выполненного посредством 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);
db_num_rows - Позволяет узнать количество строк результата запроса.
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);
db_num_fields - Позволяет узнать количество полей результата запроса.
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);
db_next_row - Выполняет переход к следующей строке результата 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;
}
db_field_name - Позволяет узнать название поля результата по его порядковому номеру.
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);
db_get_field - Позволяет узнать содержимое поля результата по его порядковому номеру.
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);
}
}
db_get_field_assoc - Позволяет узнать содержимое поля результата по его имени.
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
Последнее редактирование: