개발자

Expo SQLite WHERE 조건 한글 안됨

2024년 08월 13일조회 51

React Native Expo에서 앱을 개발중에 sql문이 오류가 뜹니다. 코드는 아래와 같습니다. async function SearchName() { console.log("load data"); try { const db = await SQLite.openDatabaseAsync("MountBedge.db"); const data = await db.getAllAsync(`SELECT * FROM HikingData WHERE Name = '가';`); setLoadedData(data); } catch (error) { console.error("Error testing database connection:", error); } } 문제가 되는 부분은 getAllAsync의 WHERE부분입니다. 한글로 검색한 부분을 영어로 변경하면 오류도 뜨지 않고 검색도 잘 됩니다. 한글로 검색 시 뜨는 오류는 아래와 같습니다. Error testing database connection: [Error: Calling the 'prepareAsync' function has failed → Caused by: Error code 1: near "'ㄱ'": syntax error] 혹시 해결할 방법을 아시는 분이 계시나요? 이게 expo에서는 해결이 가능한건지, 아니면 react native cli로 넘어가야 하는건지 모르겠습니다. 추가로 expo에서 sql문으로 데이터를 저장 시 db가 어디에 있는지 알 수 있는 방법이 있다면 알고싶습니다. 영어를 못해 영어로는 검색을 거의 안해봤지만 자료가 너무 없네요...

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 08월 13일

SQLite의 경우에 한글을 대소문자 구분 없이 검색하려면 먼저 데이터베이스에 UNICODE 확장함수를 로드해야 합니다. ```SQL SELECT load_extension('ICU'); // unicode 처리를 위한 확장 함수 로드 ``` 그런데 모바일 앱에서는 파일 시스템 경로나 DB 로딩 관련하여 제한사항들이 있어서 복잡할 수 있습니다. 따라서 이 문제 해결은 React-native cli 기반으로 넘어가는 것도 고려해볼만합니다. 그리고 Expo에서 SQLite를 사용하면 데이터베이스 파일은 애플리케이션의 내부 저장 공간에 저장됩니다. 일반적으로 이 위치는 직접 접근할 수 없지만, Expo FileSystem API를 사용해서 파일 시스템을 조작하는 것이 가능합니다. 개발자가 데이터베이스 파일을 직접 접근하는 것은 권장되지 않습니다. 그러나 테스트 목적으로 필요한 경우 FileSystem.documentDirectory 또는 FileSystem.cacheDirectory 를 참조하여 시도해 보실 수 있습니다. ```javascript import * as FileSystem from 'expo-file-system'; console.log(FileSystem.documentDirectory); ``` 위 코드를 실행하면 앱의 내부 저장공간 경로가 출력됩니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!