shape1
shape2
shape3
shape4
shape7
shape8

Функции SQLite

  • Автор темы Amfy
  • Дата начала

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











 
Последнее редактирование:

AMD71

Новичок
Пользователь
12.07.2014
15
10
0
25
Очень неплохо,но mysql лучше =)