Sqlite

  • Published on
    엄청난 삽질을 했다. 무려 반나절? 타이타늄 버그인지 원래 그런건지 모르겠지만,.. DB 테이블을 만들때 숫자로 ID 값을 만드는 경우가 있다. 이때 ID의 데이터 타입으로 INTEGER나 TEXT 타입으로 지정할수있는데, INTEGER로 할 경우 MAX_INT 의 범위가 모호하다. 아마 시스템마다 다를 것으로 예상되는데, 정확히 범위가 얼마인지는 테스트 안해봤다. 여튼 ID 값은 유니크해야하므로 INTEGER로 지정할 경우 AUTOINCREMENT 를 지정해 쓸수도 있다. 하지만 부득히 시스템에서 유니크한 값을 결정해 넣을 경우엔 시스템에서 제공하는 getGuid() 같은 함수가 있다면 그걸 사용하고, 없는 경우엔 Date.getTime() 같은 시간함수를 이용해 유니크한 값을 얻을수도 있다. 그렇데 이렇게 숫자로 지정된 타임스템프를 가져올 경우 시스템마다 범위가 달라서 인식을 못할수도 있다는 사실!!. 뚜둥~! 타이타늄에선 인식을 못했다. -_- 제기랄... 해결법은 간단히 IN
  • Published on
    앱을 만들다보면 앱안에서 사용하던 데이터를 종종 바꿔야하는 경우가 있다. 이럴 경우 앱을 다시 배포하거나 데이터를 DB로 만들어서 DB를 바꿔줘야한다. 하지만 전자의 경우 앱을 재배포해야하는 문제가 있기 때문에 후자를 선호한다. 아이폰 앱중에 서울버스앱이 바로 이런 경우에 해당한다. 노선정보가 매번 바뀔때마다 앱을 새로 배포하지않고, 노선정보 DB만 업데이트해준다. 사실 서울버스앱 내부적으로 SQLite를 써서 바꿔치고 있는지는 모르겠지만.. 아마도 그렇치 않을까 조심히 추측해본다. 그럼, SQLite를 이용해 데이터베이스를 바꿔치는 방법에 대해 알아보자. 타이타늄에서 SQLite DB 인스톨하기 일단, 타이타늄에서 DB를 인스톨하는 방법은 간단하다. Ti.Database.install( String path, String dbName) API 문서 참고 아이폰의 경우 아래 코드와 같이 호출하게 되면, 해당 DB가 /Library/Private Documents/에 .sql 확장자가
  • Published on
    Blob 객체란? 타이타늄 모바일에서 Blob 객체는 내부 데이터를 바이너리로 가지고 있는 객체를 의미한다. The blob is an abstract data type that represents binary information, often obtained through HTTPClient or via files. It often is used to store text or the actual data of an image. 그리고 종종 이 객체를 그대로 데이터베이스에 저장하고 싶을때가 있다. 예를 들면 카메라로 찍은 이미지를 서버에 저장하지 않고, 그냥 앱안에 저장하고 싶은 경우가 있을수 있다. 이런경우엔, 보통 2가지를 생각해볼 수있다. SQLite 를 이용해 이미지를 앱 안에 저장한다. 찍은 이미지를 로컬 파일 시스템에 저장하고, Native Path를 DB에 저장한다. 여기서 다룰 내용은 바로 1번에 해당하는 내용이다. 그럼, 본론으로 들어가자! Blob 이미지와 SQLi