勇芳软件工作室.汉化:  SQLite3 API Functions > Statements >

sqlite3_column_value

Previous pageReturn to chapter overviewNext page

描述

 

返回列值作为指向不受保护的sqlite3_value对象的指针。

 

C / C ++语法

 

sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);

 

PB语法

 

FUNCTION sqlite3_column_value ( _

BYVAL hStmt AS DWORD, _

BYVAL nCol AS LONG _

) AS DWORD

 

参数

 

pStmt

 

[in]语句句柄。

 

nCol

 

[in]应返回信息的列的索引。结果集的最左列有索引0。结果中的列数可以使用sqlite3_column_count确定。

 

返回值

 

列值作为指向不受保护的sqlite3_value对象的指针。

 

备注

 

如果SQL语句当前没有指向有效的行,或者如果列索引超出范围,则结果是未定义的。这些功能只能在最近调用sqlite3_step已返回SQLITE_ROW时调用,并且之后不再调用sqlite3_resetsqlite3_finalize.如果在sqlite3_resetsqlite3_finalize之后或sqlite3_step返回了除了SQLITE_ROW之外的任何其他函数中调用了这些函数,则结果未定义。sqlite3_resetsqlite3_resetsqlite3_finalizesqlite3_value待处理之前从另一个线程调用,则结果未定义。

 

sqlite3_column_value返回的对象是一个无保护的sqlite3_value对象。不受保护的sqlite3_value对象只能与sqlite3_bind_valuesqlite3_result_value一起使用。如果以sqlite3_column_value返回的未受保护的sqlite3_value对象以任何其他方式使用,包括调用sqlite3_value_intsqlite3_value_textsqlite3_value_bytes等功能,则行为是未定义的。

 

如果在评估任何这些功能时发生内存分配错误,则返回默认值。默认值为NULL指针。对sqlite3_errcode的后续调用将返回SQLITE_NOMEM。

 

C ++实现代码

 

SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){

Mem *pOut = columnMem(pStmt, i);

if( pOut->flags&MEM_Static ){

  pOut->flags &= ~MEM_Static;

  pOut->flags |= MEM_Ephem;

}

columnMallocFailure(pStmt);

return (sqlite3_value *)pOut;

}