본문 바로가기
iOS Swift/error 해결 방법

sqlite3 select할때 한 줄만 주구장창 나온다면?

by 호두빵 2022. 12. 22.

func selectSiteData(clientName: String) -> [TrustedSiteData]{ //데이터 조회
    let selectQuery = "select * from sitetable where clientname like '%\(clientName)%'"
    var statement: OpaquePointer? = nil

    var result: [TrustedSiteData] = []

    if sqlite3_prepare_v2(self.db, selectQuery, -1, &statement, nil) == SQLITE_OK {
        while (sqlite3_step(statement) == SQLITE_ROW){
            let result1 = Int(sqlite3_column_int(statement, 0)) //sequence
            let result2 = String(cString: sqlite3_column_text(statement, 1)) //clientKey
            let result3 = String(cString: sqlite3_column_text(statement, 2)) //clientName
            result.append(TrustedSiteData(sequence: result1, clientKey: String(result2), clientName: String(result3)))
            }
        } else {
        let errorMessage = String(cString: sqlite3_errmsg(db))
        print("\nQuery is not prepared \(errorMessage)")
    }
    sqlite3_finalize(statement)
    return result
}

진짜 진짜 간단하지만 놓치기 쉬운 에러였습니다. 내가 갖고 있는 데이터는 분명히! 기필코 2개 이상인데 아무리 select문을 갈겨도 하나밖에 찍히지 않고 계신가요? 그렇다면 지금 코드를 잘 들여다보세요... 아마 if(sqlite3_step(statement) ==SQLITE_ROW)로 코드가 적혀있을것입니다. if를 while로 간단하게 바꿔주면 애타게 보고싶었던 데이터들이 튀어나올거에요...(저는 이거때문에 2시간동안 고생했어요..)