簡體   English   中英

為什么在Java / Android中為空的SQLite字段輸入“ 0.0”?

[英]Why am I getting a “0.0” for an empty SQLite field in Java/Android?

編碼:

double indSRate[] = new double[c.getCount()];
indSRate[e++] = c.getDouble(c.getColumnIndex("s_rate"));


if (String.valueOf(indSRate[s]) == null) {
    Log.d("Special Rate", String.valueOf(indSRate[s++]));
}

用戶在編輯文本字段中將s_rate列中的字段留為空白。 我會以某種方式將它變成雙倍嗎?

在循環內部,如果該字段為空,我想做某些事情,否則為空。 但這似乎是0還是更大? 我無法測試它是否為“ 0”或其他值。 我必須在isEmpty之間進行測試嗎?

諸如double和int之類的原始數據類型不能為null或“空” ...將它們轉換為String時,默認值分別為“ 0.0”和“ 0”。

加成

您可以檢查double的值是否為0.0

if(indSRate[s] == 0.0) { // default value
    Log.d("Special Rate", String.valueOf(indSRate[s++]));
}

要么:

int rateIndex = c.getColumnIndex("s_rate");
while(c.moveToNext()) {
    if(c.isNull(rateIndex))
        Log.d("Special Rate", "Null");
    indSRate[e++] = c.getDouble(rateIndex);
}

有很多解決方案...

如果值的內部表示為NULL並且查詢請求FLOAT ,則返回值為0.0(請參見本文檔 )。

如果您不希望游標中的該列為NULL值,請在查詢中指定。 如果您不想在數據庫中使用NULL值,請在創建表時使用列約束進行指定。

如果列的值為NULL,則ResultSet.getDouble返回0.0。 如果要在使用基本雙精度時區分0.0和NULL,則必須顯式檢查ResultSet.wasNull()。 或者,您可以獲取ResultSet.getObject()並轉換為Double。 在這種情況下,您將獲得一個null引用,顯然可以對照'null'進行檢查。

Double用0.0表示,因此為空時顯示0.0。 嘗試這個:

String s = null;

double indSRate[] = new double[c.getCount()];

indSRate[e++] = c.getDouble(c.getColumnIndex("s_rate"));

if (String.valueOf(indSRate[s]) == null) {
    Log.d("Special Rate", s));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM