2013-02-17 79 views
0

我有一个数据库很少有表。我想知道,在数据库中创建表的最佳方法是什么?我的表包含字符串(文本)和数字(int和双精度)。我应该使用所有数据类型text,int,double等来创建表格,还是应该在插入和读取显示之前创建包含所有文本的表格并将其转换。Sqlite数据库创建,最佳实践Android

比方说,这是我有表...

sqlDB.execSQL("create table if not exists "+scriptName+"(dateofpurchase text, buyorsell text," + 
       " purchasedquantity int, purchasedprice double, investmentwithoutbrokerage double," + 
       " brokerage double, servicetax double, stt double, stampduty double, othertaxes double," + 
       " investmentwithbrokerage double)"); 

而不是创建具有不同数据类型的表,如果我创建了所有“文本” S桌子上做要紧的转换字符串需要时。

sqlDB.execSQL("create table if not exists "+scriptName+"(dateofpurchase text, buyorsell text," + 
        " purchasedquantity text, purchasedprice text, investmentwithoutbrokerage text," + 
        " brokerage text, servicetax text, stt text, stampduty text, othertaxes text," + 
        " investmentwithbrokerage text)"); 

之前将数据插入到表中,我将所有的值转换为字符串,并同时从表中检索值,(用于计算),我将它们转换回到各自的数据类型。为了在屏幕上显示,我可以直接使用它们作为字符串。

如果我像上面那样创建表,那么与创建具有所有数据类型的表相比,有哪些缺点/优点?

+1

记住SQLite并不真的'拥有'[数据类型](http://www.sqlite.org/datatype3.html)。 – wtsang02 2013-02-17 03:15:14

+0

哦,Okie ..但你觉得更方便的方法是什么? – 2013-02-17 03:26:36

+0

@ wtsang02,您的评论不正确。 SQLite区分文本和数字,所以它肯定具有类型亲和力。 – 323go 2013-02-17 04:41:00

回答

0

总是使用正确的数据类型创建您的表。在SQLite中,你不需要区别BYTE和INTEGER或VARCHAR(n)和TEXT,数字和字符串之间有明显的区别。使用准确的类型可以让你的模型更易于理解,并且可以防止无效的值,即数字字段中的字符串。从数字字段到字符串的转换很便宜;也考虑到你可能想要适当地设置货币值。因此,将它们存储为字符串不仅不切实际,而且可能使代码严重复杂化(并且破坏)。