2013-04-02 3 views
1

C++에서 문자열 배열로 항목 목록이 있습니다. 나는 또한 블랙리스트 된 문자열을 포함하고있는 sqlite3 데이터베이스를 가지고있다. 이제는 내가 블랙리스트에 있는지 아닌지 알려주는 아이템 목록을 0 ​​또는 1로 표시해야합니다. "select * from ITEMS_TABLE WHERE item = string [i]"를 사용하여 하나씩 검색 할 수는 있지만 시간이 걸립니다. 또한 데이터베이스에서 블랙리스트를 가져 와서 내 목록에서 찾아 볼 수도 있습니다. 그러나 목록에있는 항목 중 블랙리스트에있는 항목을 찾는 효과적인 방법이 있습니까?sqlite3 데이터베이스에서 특정 항목에 대한 검색 쿼리

struct item 
{ 
    char name[MAX_NAME_LEN]; 
    bool isBlacklisted; 
}; 

그런 다음 내가 그들 중 하나가 블랙리스트 경우에 알고 이러한 구조의 배열을 사용 나는 구조 다음했다 말할 수 있습니다. 그래서 항목이 데이터베이스에서 발견되면 true로 isBlacklisted 플래그를 만들어야합니다. Select 접근 방식을 사용하면 블랙리스트에 있던 항목 목록을 반환합니다. 하지만 여전히 문자열 비교를 사용하여 배열에서 찾을 필요가 있습니다. 할 수있는 효율적인 방법이 있습니까? 데이터베이스가 이러한 기능을 제공합니까?

감사합니다. 마이크.

답변

0

요구 사항에 따라 데이터베이스 구조를 디자인하십시오. 당신은 블랙리스트 항목은 단순히 ITEMS_TABLE이 열 지금

itemcode itemname isblacklist 
1  item1 0 
2  item2 0 
3  item3 1 

Select * from ITEMS_TABLE WHERE isblacklist=0 

이 아닌 블랙리스트 항목과

을 반환을 가지고 테이블을, 즉 블랙리스트 0 또는 1을 포함하는 열을 사용 여부를 알고 싶어
Select * from ITEMS_TABLE WHERE isblacklist=1 

는 블랙리스트 항목을 반환합니다 희망이 당신에게 A에 대한 감사를

+0

안녕하세요 도움이 될 것입니다 nswer,이게 더 효율적으로 일하는 데 도움이되지만 업데이트 된 문제에 대한 해결책을 제공해 주실 수 있습니까 – Mogambo

+0

이게 도움이 되길 바란다 –

+0

나는 이런 식의 테이블을 가지고 있습니다. 그러나 N 아이템을 포함하는 다른리스트를 얻을 수도 있습니다. 데이터베이스에 있어야합니다. 그래서 이들 중 하나가 데이터베이스에 있다면 블랙리스트로 표시해야합니다. 데이터베이스에는 블랙리스트 항목 만 포함되어 있으며, 항목 목록을 가져 와서 블랙리스트에있는 항목 중 어떤 항목을 스캔합니까? 위에서 언급 한대로 DB에서 항목 목록을 얻습니다. 이제는이 목록을 N 항목 목록과 일치시켜야합니다. 일치하는 항목이 발견되면 차단 목록이 설정됩니다. 문자열 비교를 피하고 싶습니다. 데이터베이스로 할 수 있는지 확인 – Mogambo

관련 문제