2009-10-08 15 views
5

Ben INTEGER olarak veritabanında Değişken türü oluşturdukiphone'daki bir sqlite veritabanından yüzen sayıları (REAL) nasıl okuyorsunuz?

sqlite db nokta ondalık sayılar kayan okumaya gerek

parçalarımda böylece değiştirmiş olması gerekir

yüzer i okuyabilir NSInteger değişkenlere sqlite3_column_int ile okuyorum veritabanından nokta tamsayılar cevaplar için

sayesinde üzgün bir kayan noktalı sayı olarak alanları beyan bu konularla

cevap

5

bir acemiyi im. sqllite datatype doc'dan veritabanı tipi REAL'dir. Bu, bir Objective-C çift, NSDouble veya NSNumber tipi olan 8 baytlık bir kayan nokta sayısıdır.

+0

Ben ikinci bu. Değişkeni INTEGER yerine REAL olarak ilan edin ve değeri çift olarak okumak için sqlite3_column_double komutunu kullanın. – lostInTransit

+0

Bana işaret ettiğin için teşekkürler sqlite datatype doc, bunun bir yerde olduğunu biliyorum ama bu belgeyi bulamıyorum –

13

Kayan nokta tamsayı diye bir şey yoktur. Temel düzeyde karşılıklı olarak birbirlerini dışlıyorlar (iyi kayan nokta sayıları tamsayı sınırlarına düşebilir, ancak bu fikri alırsınız): P.

Ancak, yüzdürmenin yolu sqlite3_column_double(sqlite3_stmt *, int) işlevini kullanmaktır. Ek bilgi için

NSNumber *f = [NSNumber numberWithFloat:(float)sqlite3_column_double(stmt, col)]; 
+0

harika çalışıyor –

-1

, Sqlite3 bir dinamik veri türü sistemi kullanır. bu yüzden bu son şey:

  • BOŞ
  • TAMSAYILI
  • GERÇEK
  • METİN
  • BLOB

sadece (teknik olarak, yakınlık) sqlite için ipuçları ve bitireceğiz vardır kendi türü üzerinde karar verme ya da değil. vs, çift, int'leri dönmek sqlite C API parçası olan

http://www.sqlite.org/datatype3.html

fonksiyonları yani ne bir sütunda depolanan potansiyel sqlite tarafından dönüştürülebilir .... sen istediğini vermek için elinden geleni eğer istediğin şey db'de olandan farklı.

http://www.sqlite.org/c3ref/column_blob.html

yaklaşık ne olacağını bildiririz kullanışlı masa var, aşağı yarıda.

Bu kod benim için çalıştı
2
NSNumber *num; 
int temp = (float)sqlite3_column_double(walkstatement, 3); 
num = [[NSNumber alloc]initWithInt:temp]; 
NSLog(@"%@",num); 

..

İlgili konular