云数据库 GaussDB-执行SQL语句

时间:2025-02-12 15:05:25

执行SQL语句

为了帮助用户实现与数据库的交互,ODBC提供执行SQL语句的相关API如表1所示。

表1 相关API说明

功能

API

设置语句属性

SQLSetStmtAttr

为执行SQL语句做准备

SQLPrepare

执行一条准备好的SQL语句

SQLExecute

绑定SQL语句的参数标志和缓冲区

SQLBindParameter

直接执行SQL语句

SQLExecDirect

  • ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保密信息的SQL语句时(如明文密码),保密信息会被暴露在驱动日志中。
  • 数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。
示例如下(完整示例请参考获取和处理数据库中的数据):
// 设置语句属性。SQLSetStmtAttr(V_OD_hstmt, SQL_ATTR_QUERY_TIMEOUT, (SQLPOINTER *)3, 0);// 申请语句句柄。SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt);  // 直接执行SQL语句。SQLExecDirect(V_OD_hstmt, "drop table IF EXISTS customer_t1", SQL_NTS);SQLExecDirect(V_OD_hstmt, "CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));", SQL_NTS);SQLExecDirect(V_OD_hstmt, "insert into customer_t1 values(25, 'li')", SQL_NTS);// 准备执行。SQLPrepare(V_OD_hstmt, "insert into customer_t1 values(?)", SQL_NTS);// 绑定参数。SQLBindParameter(V_OD_hstmt,1, SQL_PA RAM _INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0,   &value, 0, NULL);// 执行准备好的语句。SQLExecute(V_OD_hstmt);      SQLExecDirect(V_OD_hstmt, "select c_customer_sk from customer_t1", SQL_NTS);
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-1624.html