SQLite返回错误的整数值

时间:2015-02-22 02:46:41

标签: ios sqlite

我从SQlite3中的INTEGER列得到了奇怪的错误值。这是

从终端我执行了选择声明

sqlite> select userId, email, firstName, lastName, mobilePhone, passWord, signupDate, profilePicture from SCH_USERS where email = 'sujitdala@y.ccom';
8|sujitdala@y.ccom|Sujit|Dalai|**5106932562**|yas|2015-02-22 02:05:55 +0000|

mobilePhone值为5106932562 现在当我在IOS中执行相同的select语句时,我得到了不同的价值 这是

NSString * sql = [NSString stringWithFormat:@"select userId, email, firstName, lastName, mobilePhone, passWord, signupDate, profilePicture from SCH_USERS where email = '%@';", email];
NSLog(@"sql: %@", sql);
sqlite3_stmt * selectStatement;
if (sqlite3_prepare_v2(sqlite.database, [sql UTF8String], -1, &selectStatement, NULL) == SQLITE_OK)
{
    while (sqlite3_step(selectStatement) == SQLITE_ROW)
    {
        NSNumber *mobilePhone = [NSNumber numberWithInt:sqlite3_column_int(selectStatement, 4)];
        NSLog(@"mobile phone %@", mobilePhone);
    }
}

日志中的结果是2015-02-21 18:05:55.171预约安排[40331:7035909]电话:811965266

这很奇怪。有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

实际上并没有那么奇怪...... 5,106,932,562减去811,965,2664,294,967,296,恰好是2^32 - 所以你只是体验到了这里有整数溢出

这就是你的错误所在 - 将电话号码存储为整数,当然不是。

存储电话号码 - 字符串