none
Visual Studio에서 sqlite3에 대한 오류 RRS feed

  • 질문

  • 안녕하세요.

    Visual studio에서 sqlite3를 사용하려고 아래와 같이 코드를 작성하였습니다. 실행을 시키면 sqlite3_prepare_v2함수에서 에러코드 1(SQLITE_ERROR)이 발생을 합니다. 하지만 코드를 보면 이상한 점을 찾지 못하겠습니다. 어디가 잘 못되었을까요? 감사합니다. 

    #include "pch.h"
    #include <stdio.h>
    #include "sqlite3.h"
    
    int main(void)
    {
    	sqlite3 *db;
    	sqlite3_stmt *stmt;
    	int rc = 0;
    
    	sqlite3_open(u"D:\\작업폴더\\example.db", &db);
    
    	if (db == NULL)
    	{
    		printf("Failed to open DB\n");
    		return 10;
    	}
    
    	printf("Performing query...\n");
    	rc = sqlite3_prepare_v2(db, "SELECT * FROM stocks", -1, &stmt, NULL);
    	printf("%d\n", rc);
    
    	printf("Got results:\n");
    	printf("%s\n", (char*)stmt);
    	while (sqlite3_step(stmt) == SQLITE_ROW) {
    		printf("%s,\t ", sqlite3_column_text(stmt, 0));
    		printf("%s,\t ", sqlite3_column_text(stmt, 1));
    		printf("%d,\t ", sqlite3_column_int(stmt, 2));
    		printf("%d", sqlite3_column_int(stmt, 3));
    		printf("\n");
    	}
    
    	sqlite3_finalize(stmt);
    
    	sqlite3_close(db);
    	getc(stdin);
    	return 0;
    }


    2019년 3월 26일 화요일 오후 10:35

답변

  • const char *errmsg = sqlite3_errmsg(db);

    위의 코드로 에러 메시지를 출력해 보세요. 아마도 stocks 테이블이 example.db에 없어서 그런 것 같은데요.

    • 답변으로 표시됨 Young S. Kim 2019년 3월 27일 수요일 오전 5:08
    2019년 3월 26일 화요일 오후 11:59

모든 응답

  • const char *errmsg = sqlite3_errmsg(db);

    위의 코드로 에러 메시지를 출력해 보세요. 아마도 stocks 테이블이 example.db에 없어서 그런 것 같은데요.

    • 답변으로 표시됨 Young S. Kim 2019년 3월 27일 수요일 오전 5:08
    2019년 3월 26일 화요일 오후 11:59
  • 해결을 해서 삭제를 하려고 하니 답변을 주셔서 해결방안을 약간 공유드립니다.

    sqlite3_open_v2에서 파일이름을 URI로 할 수 있도록 수정하니 됩니다. 다만, 문제는 폴더이름이 한글인 경우 인식을 못하네요.

    db파일을 현재의 프로젝트 폴더로 옮기고 다음과 같이 코드를 수정하니까 되네요.

    sqlite3_opne_v2("file:example.db", &db, SQLITE_OPEN_READONLY | SQLITE_OPEN_URI, NULL);  

    감사합니다.

    2019년 3월 27일 수요일 오전 5:02