---
title: "db_query | open.mp"
description: "在已打开的SQLite数据库上执行SQL查询语句。"
canonical: https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_query
language: zh-CN
---

# db\_query

注意

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

## 描述

此函数用于在已建立的 SQLite 数据库连接上执行 SQL 查询。

| 参数 | 说明 |
| --- | --- |
| DB:db | 数据库连接句柄 |
| query\[\] | 要执行的 SQL 查询语句 |

## 返回值

-   执行成功返回结果集句柄索引（从 1 开始）
-   执行失败返回 0

## 示例

```c
// 实体存储模块

EntityStorage_SpawnAll(DB:connectionHandle)
{
    // 从"entities"表中查询所有记录
    new DBResult:db_result_set = db_query(connectionHandle, "SELECT * FROM `entities`");

    // 验证结果集有效性
    if (db_result_set)
    {
        // 执行数据操作...

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

```c
// 游戏模式主文件

#include <entity_storage>

static DB:gDBConnectionHandle;

// ...

public OnGameModeInit()
{
    // ...

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

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

    return 1;
}

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

## 注意事项

注意

必须使用[db\_free\_result](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_free_result)释放查询结果，否则会导致内存泄漏！

## 相关功能

-   [db\_open](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_open): 建立数据库连接
-   [db\_close](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_close): 关闭数据库连接
-   [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](https://omp.itsneufox.com/zh-CN/docs/scripting/functions/db_get_field): 通过索引获取字段值
-   [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): 调试结果集数量
