我从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
这很奇怪。有什么帮助吗?
答案 0 :(得分:3)
实际上并没有那么奇怪...... 5,106,932,562
减去811,965,266
是4,294,967,296
,恰好是2^32
- 所以你只是体验到了这里有整数溢出。
这就是你的错误所在 - 将电话号码存储为整数,当然不是。
存储电话号码 - 字符串。