2012-05-25 2 views
0

코드 다음 s_rate 열의 필드가 편집 텍스트 필드에서 사용자가 비어 있었다Java/Android에서 빈 SQLite 필드에 "0.0"이 표시되는 이유는 무엇입니까?

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++])); 
} 

. 나는 그것을 어떻게 든 두 배로 바꾸는가?

루프 내부에서 필드가 비어 있으면 특정 작업을하고 싶지 않은 경우에는 다른 작업을 수행하려고합니다. 하지만 0 이상인 것으로 보입니까? 나는 그것이 "0"또는 다른 것 인지를 테스트 할 수 없다. 나는 isEmpty 사이를 시험해야합니까?

답변

2

내부 만약 ... 많은 솔루션이 있습니다 표현 o f 값이 NULL이고 쿼리가 FLOAT을 요청하면 반환 값으로 0.0을 얻습니다 (this document 참조).

커서의 해당 열에 NULL 값을 사용하지 않으려면 쿼리에서 지정하십시오. 데이터베이스에 NULL 값을 사용하지 않으려는 경우 테이블을 만들 때 열 제약 조건과 함께 값을 지정하십시오.

+0

답변을 수락합니다. 아무도 그 문제를 해결할 실제적인 코드를 제공하지 못했지만 당신은 내 뒤죽박죽 뒤에 올바른 이유를 제시했습니다.더 중요한 것은, 나중의 제안은 올바른 길로 나를 잡았습니다. 기본적으로 모든 double을 String으로 변환했습니다. 그리고 사용자가 EditText 상자를 제출할 때 - 그리고 그것이 비어있는 경우 - 나는 그것이 null로 설정되었는지 확인했습니다. – KickingLettuce

3

double 및 int와 같은 기본 데이터 유형은 null 또는 "비어있을 수 없습니다 ... 이들을 문자열로 변환하면 기본값은 각각"0.0 "및"0 "입니다.

추가

두 배의 값이 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); 
} 

+0

문제는 double에 값이 필요하다는 것이 아니라 API가 올바르게 사용되지 않는 것입니다. –

+0

코드 및/또는 데이터베이스에 수표를 추가하면 향후 사용자가 공백 또는 다른 잘못된 데이터를 입력하지 못하게됩니다. 또한 현재 데이터베이스를 갱신하여 유효하지 않은 모든 데이터를 적절한 기본값으로 설정할 수 있습니다. 추가 사항 중 하나가 현재 문제를 해결하는 데 도움이됩니까? – Sam

1

두 번 0.0으로 표시되고, 따라서 비어 가

enter code here 

문자열의 = NULL을하려고 할 때 0.0 보여줍니다;

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

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

경우 (한 String.valueOf (indSRate [S]) == NULL) 컬럼의 값이 NULL이면 {

Log.d("Special Rate", s)); 

}

2

ResultSet.getDouble 0.0를 반환한다. 기본 double을 사용할 때 0.0과 NULL을 구별하려면 ResultSet.wasNull()을 명시 적으로 확인해야합니다. 또는 ResultSet.getObject()를 가져 와서 Double에 캐스트 할 수 있습니다. 이 경우 'null'에 대해 분명히 확인할 수있는 null 참조가 생성됩니다.

관련 문제