---
title: "db_get_field | open.mp"
description: "从db_query结果中获取字段内容"
canonical: https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field
language: zh-CN
---

# db\_get\_field

注意

此函数已弃用，请使用 [DB\_GetFieldString](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/DB_GetFieldString)。

## 描述

从[db\_query](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_query)结果集中获取指定字段的内容。

| 参数 | 说明 |
| --- | --- |
| DBResult:dbresult | 查询结果句柄（由[db\_query](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_query)返回） |
| field | 目标字段索引 |
| result\[\] | 存储结果的字符数组 |
| maxlength | 结果的最大存储长度 |

## 返回值

-   **1** - 结果集句柄有效且字段存在
-   **0** - 结果集句柄无效或字段不存在

## 示例

```c
// examples.inc

// ...

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_ListNames(DB:dbConnectionHandle)
{
    // 执行数据库查询
    new DBResult:db_result_set = db_query(dbConnectionHandle, "SELECT `name` FROM `examples`");

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

        if (target_field_index >= 0)
        {
            // 预分配结果存储空间
            new result[256];

            // 遍历结果集
            do
            {
                // 获取目标字段内容
                db_get_field(db_result_set, target_field_index, result, sizeof(result));
            }
            while (db_next_row(db_result_set));  // 跳转至下一行
        }

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

```c
// mode.pwn

// ...

#include <examples>

static DB:gDBConnectionHandle;

// ...

public OnGameModeInit()
{
    // ...

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

    // 检测数据库连接状态
    if (gDBConnectionHandle)
    {
        print("成功连接数据库 \"example.db\"");
        Examples_ListNames(gDBConnectionHandle);
    }
    else
    {
        print("无法连接数据库 \"example.db\"");
    }

    return 1;
}

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

## 注意事项

注意

使用非法的结果集句柄将导致服务器崩溃！请始终通过[db\_query](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_query)获取有效的查询结果

## 相关函数

-   [db\_open](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_open): 建立 SQLite 数据库连接
-   [db\_close](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_close): 关闭 SQLite 数据库连接
-   [db\_query](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_query): 执行 SQL 查询语句
-   [db\_free\_result](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_free_result): 释放查询结果内存
-   [db\_num\_rows](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_num_rows): 获取结果集行数
-   [db\_next\_row](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_next_row): 跳转至下一行数据
-   [db\_num\_fields](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_num_fields): 获取结果集字段数量
-   [db\_field\_name](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_field_name): 通过索引获取字段名称
-   [db\_get\_field\_assoc](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field_assoc): 通过字段名称获取当前行数据
-   [db\_get\_field\_int](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field_int): 通过字段索引获取整型数据
-   [db\_get\_field\_assoc\_int](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field_assoc_int): 通过字段名称获取整型数据
-   [db\_get\_field\_float](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field_float): 通过字段索引获取浮点数据
-   [db\_get\_field\_assoc\_float](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field_assoc_float): 通过字段名称获取浮点数据
-   [db\_get\_mem\_handle](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_mem_handle): 获取数据库内存句柄
-   [db\_get\_result\_mem\_handle](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_result_mem_handle): 获取查询结果内存句柄
-   [db\_debug\_openfiles](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_debug_openfiles): 调试数据库连接数
-   [db\_debug\_openresults](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_debug_openresults): 调试查询结果数
