2013-06-28 190 views
-1

this one有关的问题。好的,现在我用bind_text函数绑定我的unsigned integer。之后在INTEGER列我看到正确存储的unsigned integer值。现在,我想从基地接收它到C++变量unsigned int xxx。最好的办法是什么?请求作为文本然后转换为ui?或请求sqlite_int64然后以某种方式转换为unsigned int?请添加一些示例代码。谢谢。sqlite C++和无符号整数操作

+0

你为什么用结合' sqlite3_bind_text()'而不是'sqlite3_bind_int()'? – trojanfoe

+0

@trojanfoe因为估值器是'unsigned',如果用'_int()'函数绑定,它的显示为负数 – abrahab

+0

这是垃圾。 – trojanfoe

回答

2

有绑定的unsigned integer只有一个正确的方法:使用sqlite3_bind_int64

unsigned int key = ...; 

sqlite3_bind_int64(stmt, 1, key); 

要获得这样的值从查询回来,用sqlite3_column_64

key = (unsigned int)sqlite3_column_int64(query_stmt, 0); 
+0

我假设'sqlite3_bind_int()'会工作得很好,除了数字> 0x80000000会在数据库中显示为负数,但会使用'sqlite3_column_int()'转换回来吗? – trojanfoe

+0

这是行不通的,因为*任何其他访问这些值的方法都不会导致相同的值。 –

+0

仅适用于(错误)使用符号位的值,因此大多数值都可以。 – trojanfoe