2013-01-23 2 views
2

서버에서 텍스트 및 부울 값을 가져 오는 중 데이터베이스에 저장해야합니다.부울 값을 갖는 sqlite?

이것은 내 테이블입니다. 부울 값을 sqlite에 INTEGER로 정의했습니다. 부울 값은 없습니다.

db.execSQL("CREATE TABLE outcomesStore(id INTEGER PRIMARY KEY AUTOINCREMENT , allowgo INTEGER,cod TEXT,youdidComments INTEGER, youwent INTEGER,ByDate INTEGER ," + 
       "OnCompletion INTEGER,yourtext TEXT , yourGroup TEXT, yourConsultation INTEGER)"); 

이 값은 서버에서 가져옵니다.

Store[] Storedata = Configuration.getStore(); 


    booleanvalues[0] = Store[0].isallowgo(); 

helperdatabase = new DatabaseHelperInurseBusiness(this); 
      db = helperdatabase.getWritableDatabase(); 

      ContentValues insertOutcomes = new ContentValues(); 


      insertOutcomes.put(helperdatabase.ALLOW_GO,booleanvalues[0]); 
     db.insert("outcomesStore", helperdatabase.ALLOW_GO,insertOutcomes); 

그것조차 어떤 오류를 포기하지 않을 작동하지 않는 것처럼 삽입.

+0

삽입하기 전에'booleanvalues ​​[0]'을 숫자로 변환하십시오. 시도해보십시오. insertOutcomes.put (helperdatabase.ALLOW_GO, 1); –

답변

-2

나는 해결책을 얻었다.

감사합니다. Yaqub Ahamad.

insertOutcomes.put(DatabaseHelperInurseBusiness.ALLOW_GO,storedata.isAllowGo()== true ? 1:0); 
27

실제로 SQLite는 BOOLEAN 유형을 지원하지만 정확히 예상 한대로는 아닙니다. 그렇게하는 동안

CREATE TABLE mytable (name VARCHAR(10), flag BOOLEAN); 
INSERT INTO mytable (name, flag) VALUES ('Alice', 0); 
INSERT INTO mytable (name, flag) VALUES ('Bob', 1); 

그런 다음 다시 데이터를 얻을 수 있고, 표준 BOOLEAN 논리를 사용 :

당신은 표준 CREATE TABLE를 사용 BOOLEAN 유형의 열을 만든 다음 그것을 채울 수

SELECT * FROM mytable WHERE flag 

또는 다른 BOOLEAN 표현식 사용 :

SELECT * FROM mytable WHERE NOT flag 

등등. 모든 것이 잘 작동 (Obligatory SQLFiddle) 즉

는 유일한 캐치 (이 클라이언트 소프트웨어에서 값을 설정하려고 포함 ) 0 대신 FALSE1 대신 TRUE를 사용해야한다는 것입니다. 이 (예를 들어, PostgreSQL의 클라이언트 소프트웨어에 의해 FALSE/TRUE 값을 설정/'1''0', 'f'/'t'false/true를 사용하여 지원) 다른 SQL 엔진에 다소과 유사합니다. 당신이 (추가 또는 곱 등) 숫자 맥락에서이 BOOLEAN 필드를 사용한다면 다른 SQL 엔진에서 BOOLEANINTEGER 때문에 호환되지 않는 유형의 예외가 발생할 수 있습니다 추가하는 동안

또한, 숫자 0 또는 1로 동작합니다.