SQLite에서 하나의 쿼리에서 둘 이상의 select 문을 실행할 수 있습니까? 예를 들어,iOS의 sqlite에서 하나의 쿼리로 여러 select 문을 실행하는 방법은 무엇입니까?
우리는 사용하여
NSString *create_query = @"create table if not exists Employee (id integer primary key, firstName text, lastName text);create table if not exists Department (id integer primary key, department text, devision text)";
,
sqlite3_exec(self.contactDB,[create_query UTF8String], NULL, NULL, &errorMessage) == SQLITE_OK)
우리가 그것을 실행할 수, 쿼리를 만들거나 삽입 실행할 수 있습니다.
그러나 쿼리 인 경우 뭔가 같은NSString *select_query = @"select * from Employee;select * from Department";
는 그 다음 실행할 수 있습니까? 그렇다면 데이터를 sqlite3_step
과 어떻게 구별 할 수 있습니까? 같은
일반적으로 우리가 가져 오는되는 데이터,
if (sqlite3_prepare_v2(self.contactDB, [select_query UTF8String], -1, &statement, NULL) == SQLITE_OK) {
NSLog(@"prepared from data get");
while (sqlite3_step(statement) == SQLITE_ROW) {
NSString *department = [[NSString alloc]initWithUTF8String:(const char*)sqlite3_column_text(statement, 1)];
NSString *devision = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 2)];
NSLog(@"Department : %@, Devision : %@",department,devision);
}
NSLog(@"errror1 is %s",sqlite3_errmsg(self.contactDB));
}
그러나
두 개의 선택 사항이sqlite3_step
에 행과 열을 식별하는 방법을 다음이 있다면?
터미널에서 두 개의 select 문을 함께 실행할 수 있습니다 (즉, select * from Employee, select from * from Department). 그래서 iOS에서 어떤 식 으로든 사용해야합니다.
각 문은 예를 들어 큰 따옴표로해야한다; const char * sql_stmt = "select 1 .....;" "선택 2 .....;" ; –
'sqlite3_exec'을 사용하고 콜백 함수를 사용할 수 있습니다. 또는 열 수/유형이 두 쿼리에서 동일하면 단일 UNION 쿼리를 수행 할 수 있습니다. 하지만 왜? – Rob
1)'select * from ... '을 절대로 사용하지 마십시오. 선택할 컬럼을 항상 명시 적으로 나열하십시오. 2) 왜 이렇게 두 개의 'select'문을 결합하고 싶습니까? 그들은 각각 완전히 다른 값을 반환합니다. – rmaddy