Objective c 如何从sqlite数据库读取Int64值?

Objective c 如何从sqlite数据库读取Int64值?,objective-c,sqlite,Objective C,Sqlite,我的桌子和行如下所示 Table : Visit Column : VisitDate Value : 634993344000000000 VisitDate列包含Int64值(例如DateTime.Now.Ticks) 当我从数据库中读取时,SQLite无法检测列是否为Int64值。 我的代码是 switch (sqlite3_column_type(statement,i)) { case SQLITE_INTEGER: i

我的桌子和行如下所示

Table : Visit
Column : VisitDate
Value : 634993344000000000 
VisitDate列包含Int64值(例如DateTime.Now.Ticks)

当我从数据库中读取时,SQLite无法检测列是否为Int64值。 我的代码是

switch (sqlite3_column_type(statement,i))
      {
         case SQLITE_INTEGER:
                intValue  = (int)sqlite3_column_int(statement, i);
                colNameChar = (const char *)sqlite3_column_name(statement, i);
                colName =  [NSString stringWithCString:colNameChar encoding:NSUTF8StringEncoding];
                colValue = [NSNumber numberWithInteger: intValue];
                break;
        case SQLITE_FLOAT:
                dblValue = (double)sqlite3_column_double(statement, i);
                colNameChar = (const char *)sqlite3_column_name(statement, i);
                colName =  [NSString stringWithCString:colNameChar encoding:NSUTF8StringEncoding];
                colValue  = [NSNumber numberWithDouble: dblValue];
                break;
         case SQLITE_TEXT:
                 strValue = (const char *)sqlite3_column_text(statement, i);
                 colNameChar = (const char *)sqlite3_column_name(statement, i);
                 colName =  [NSString stringWithCString:colNameChar encoding:NSUTF8StringEncoding];
                 colValue = [NSString stringWithCString:strValue encoding:NSUTF8StringEncoding];
                        break;
          case SQLITE_BLOB:
                  strValue = (const char *)sqlite3_column_value(statement, i);
                  colNameChar = (const char *)sqlite3_column_name(statement, i);
                  colName =  [NSString stringWithCString:colNameChar encoding:NSUTF8StringEncoding];
                  colValue = [NSString stringWithCString:strValue encoding:NSUTF8StringEncoding];
                  break;
           case SQLITE_NULL:
                  strValue = nil;
                  colNameChar = (const char *)sqlite3_column_name(statement, i);
                  colName =  [NSString stringWithCString:colNameChar encoding:NSUTF8StringEncoding];
                  colValue = [[NSObject alloc] init];
                  break;
            default:
                   strValue = (const char *)sqlite3_column_value(statement, i);
                   colNameChar = (const char *)sqlite3_column_name(statement, i);
                   colName =  [NSString stringWithCString:colNameChar encoding:NSUTF8StringEncoding];
                   colValue = [NSString stringWithCString:strValue encoding:NSUTF8StringEncoding];
                    break;
       }    
调试器输入SQLITE_INTEGER的大小写,并生成一个垃圾值(类似于-2323423)。 如何获得正确的值?

在SQLite中,所有整数值都是64位值。 通常使用
sqlite3\u column\u int
,这只是因为大多数应用程序已经知道它们的值适合32位(或者已经从做出此假设的其他应用程序复制了该代码)


如果要检查
SQLITE\u INTEGER
值是否适合32位或64位,必须首先调用
sqlite3\u column\u int64
并检查结果。

intValue=(int)sqlite3\u column\u int(语句,i)
-您确定平台上的
int
是64位吗?否,
intValue=(int)sqlite3\u column\u int(语句,i)
此假设不正确。我知道如何阅读它(
longValue=(long)sqlite3\u column\u int64(语句,I);
)。但是问题是,
sqlite\u column\u type
无法检测到值为int或int64(long)。它没有任何帮助。那么,在这种情况下,它应该是什么呢?