跳到主要内容

db_get_field_int

注意

这个$函数以小写字母开头。

描述

通过字段索引从db_query结果中获取整数值。

参数名说明
DBResult:dbresult查询结果句柄(由db_query返回)
field = 0目标字段索引(默认 0)

返回值

以整数形式返回获取的字段值。

示例

// 示例模块

// ...

static FindFieldIndexByName(DBResult:dbResultSet, const fieldName[])
{
// 默认返回-1表示未找到
new ret = -1;

// 获取字段总数
new field_count = db_num_fields(dbResultSet);

// 当前字段名称缓存
new current_field_name[32];

// 遍历所有字段索引
for (new field_index; field_index < field_count; field_index++)
{
// 获取字段名称
if (db_field_name(dbResultSet, field_index, current_field_name, sizeof current_field_name))
{
// 匹配目标字段名称
if (!strcmp(fieldName, current_field_name))
{
ret = field_index; // 记录匹配的索引
break; // 提前退出循环
}
}
}

return ret;
}

Examples_CalculateSum(DB:dbConnectionHandle)
{
new ret;

// 执行数据库查询
new DBResult:db_result_set = db_query(dbConnectionHandle, "SELECT `value` FROM `examples`");

if (db_result_set)
{
// 获取"value"字段的索引
new target_field_index = FindFieldIndexByName(db_result_set, "value");

if (target_field_index >= 0)
{
// 遍历结果集
do
{
// 累加整数值
ret += db_get_field_int(db_result_set, target_field_index);
}
while (db_next_row(db_result_set)); // 跳转至下一行
}

// 释放结果集
db_free_result(db_result_set);
}

return ret;
}
// 主游戏模式文件

// ...

#include <examples>

static DB:gDBConnectionHandle;

// ...

public OnGameModeInit()
{
// ...

// 建立数据库连接
gDBConnectionHandle = db_open("example.db");

if (gDBConnectionHandle)
{
print("成功连接数据库 \"example.db\"");
printf("计算结果总和: %d", Examples_CalculateSum(gDBConnectionHandle));
}
else
{
print("无法连接数据库 \"example.db\"");
}

return 1;
}

public OnGameModeExit()
{
// 关闭数据库连接
if (db_close(gDBConnectionHandle))
{
gDBConnectionHandle = DB:0; // 重置句柄
}
return 1;
}

注意事项

注意

使用非法的结果集句柄将导致服务器崩溃!请始终通过db_query获取有效的查询结果

相关函数