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

sqlite3_column_double

Previous pageReturn to chapter overviewNext page

描述

 

将列值返回为double。

 

C / C ++语法

 

double sqlite3_column_double(sqlite3_stmt*, int iCol);

 

PB语法

 

FUNCTION sqlite3_column_double ( _

BYVAL hStmt AS DWORD, _

BYVAL nCol AS LONG _

) AS DOUBLE

 

参数

 

pStmt

 

[in]语句句柄。

 

nCol

 

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

 

返回值

 

列值为double。

 

备注

 

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

 

sqlite3_column_double尝试在适当的情况下转换值。下表详细说明了所应用的转化:

 

内部类型

请求类型

转变

NULL

FLOAT

结果为0.0

INTEGER

FLOAT

从整数转换为浮点数

TEXT

FLOAT

使用atof()

BLOB

FLOAT

转换为TEXT然后使用atof()

 

上面的表格参考了标准C库函数atoi()和atof()。SQLite并没有真正使用这些功能。它具有自己的等效内部功能。为了简洁起见,在表中使用了atoi()和atof()名称,因为它们是大多数C程序员熟悉的。

 

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

 

C ++实现代码

 

SQLITE_API double sqlite3_column_double(sqlite3_stmt *pStmt, int i){

double val = sqlite3_value_double( columnMem(pStmt,i) );

columnMallocFailure(pStmt);

return val;

}