Sqlite数据库创建,Android最佳实践

时间:2013-02-17 03:05:42

标签: android android-sqlite

我有一个包含很少表的数据库。我想知道,在数据库中创建表的最佳方法是什么。我的表包含字符串(文本)和数字(int和double)。我应该创建包含text,int,double等所有数据类型的表,还是应该创建包含所有文本的表并在插入和读取显示之前进行转换。

让我们说这是我的表......

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)");

如果我使用所有“text”创建表,并在需要时对字符串进行必要的转换,而不是使用不同的数据类型创建表。

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 个答案:

答案 0 :(得分:0)

始终使用正确的数据类型创建表。在SQLite中,您不需要区分BYTE和INTEGER或VARCHAR(n)和TEXT,数字和字符串之间存在显着差异。使用准确的类型可以使您的模型更易于理解,并且可以防止无效值,即数字字段中的字符串。从数字字段到字符串的转换很便宜;还要考虑您可能需要正确格式化货币值。因此,将它们存储为字符串不仅不切实际,而且可能会使代码严重复杂化(并破坏)。