2011-08-05 3 views
2

안녕하세요, iphone 애플리케이션 프로그래밍의 초보자입니다. 나는 데이터베이스와 함께 작동 할 로그인 프로그램을 개발하려고했다. "Userid", "Passwd"및 "Name"(세 개 모두 'VARCHAR'유형 임) 열과 함께 테이블 emplopyee를 사용했습니다 ... 내 프로그램에서 두 개의 텍스트 필드 "username"과 "password"를 추가했습니다. 나는 "username"과 "password"값을 가지며 두 개의 전역 객체 ('NSString'유형)에 저장했습니다. 지금은 주어진 "사용자 ID"와 "Passwd 파일".. 내가 위의 이유에 사용되는 코딩 부분 일치 "이름"을 선택하고 싶은 것은 여기에 있습니다 :Sqlite에서 두 개의 열 제약 조건과 일치하는 테이블 행을 선택하는 쿼리는 무엇입니까

sqlite3 *dB; 
sqlite3_stmt *compiledStatement; 
if(sqlite3_open([databasePath UTF8String], &dB)==SQLITE_OK){ 
    const char *sql="Select Name from employee Where Userid=? , Passwd=?"; 

      if(sqlite3_prepare_v2(dB, sql, -1, &compiledStatement, NULL)!=SQLITE_OK) 
    NSAssert1(0,@"Error while reading Employee Name -->%s',sqlite3_errmsg(dB)); 
} 
sqlite3_bind_text(compiledStatement,1,[txt UTF8String],-1,SQLITE_TRANSIENT); 
    /*txt and txt1 are the global objects i told about they have the values of Userid and Passwd from the texxt fields respectively*/ 
sqlite3_bind_text(compiledStatement,2,[txt1 UTF8String],-1,SQLITE_TRANSIENT); 


if(SQLITE_DONE != sqlite3_step(compiledStatement)) 
txt3 =[[NSString alloc] initWithUTF8String:(char*)sqlite3_column_text(compiledStatement,0)]; 


else 
    NSAssert1(0, @"Error while getting the username '%s'", sqlite3_errmsg(dB));   
    sqlite3_reset(compiledStatement); 

그것의 오류가없는 동안 컴파일하지만 응용 프로그램이 작동하지 않는 경우 쿼리에서 오류가 발생 함 (런타임) ... 제발 ... 나와 함께 맨손으로 제발 ... 당신이 데이터를 가지고 알아낼 수 없다면 나는 전체를 제공 할 것입니다. 코드 ... 유 감사

이봐, 난 여기에 오류 세부 추가 한 : 내가 사용하는 경우 이 오류가 ","발생 (쉼표) 선택 쿼리 :* 인해 캐치되지 않는 예외 'NSInternalInconsistencyException'응용 프로그램 종료, 이유는 : '오류 직원 이름을 읽는 동안 ->'근처 ",": 구문 오류 ''

그리고 난에서 사용하는 "AND"때 하나가 발생 선택 쿼리 : '사용자 이름을 가져 오는 동안 오류'가 아닌 오류 ''

답변

6

첫 번째 문제 : WHERE 절은 SQL에서

인한 캐치되지 않는 예외 'NSInternalInconsistencyException'응용 프로그램 종료, 이유는 * , 만약 당신이 아닌 쉼표를 사용 사실이 필요 것이다, 그들을 결합하기 :

SELECT Name FROM employee WHERE Userid=? AND Passwd=? 

을 그게 아니라면, 당신은 당신의 질문에 런타임 오류 메시지의 세부 정보를 편집하는 것이 좋습니다.

참고로 SQL As Understood By SQLite을 참조하십시오.

두 번째 문제는 : - 메시지 '가 아닌 오류'실마리가 잘못 전용 '성공'과 같은 기능 sqlite3_step()에서 리턴 코드 SQLITE_DONE을 치료하는 것처럼

것 같습니다. 아마도 value returned might be SQLITE_ROW - 쿼리가 성공했음을 나타내며 읽을 데이터가 있습니까?

+1

답변 주셔서 감사합니다. .. 변경해보십시오 .Ll이 런타임 오류를 곧 업데이트합니다. –

+1

지금 확인하십시오 !!! 내가 오류를 추가했습니다 ... –

+0

@ Vvk12 - 새로운 문제에 대한 업데이 트 –

0

비교할 매개 변수가 여러 개있는 경우 쉼표 (,)를 추가 할 수 없습니다. 선택 쿼리 @ 는 NSString * 유형 = @ "시작"

처럼해야

우리는 여러과의 아닌 쉼표를 추가 할 수 있습니다 "image_status = 0 AND image_id = 112 AND오고 image_type = 유형 WHERE images SELECT * FROM".

관련 문제