데이터베이스 테이블을 만들고 iOS sqlite3에 삽입 할 수 없습니다.

EA Rashel

저는 iOS 개발이 처음입니다. 간단한 할 일 목록 앱을 만들려고합니다. xocde 8 및 Objective-C 언어를 사용하고 있습니다. 여러 자습서를 시도했지만 데이터베이스 테이블을 만들 수 없습니다. 다음은 내 코드입니다.

-(void)createOrOpenDB{
    printf("createOrOpenDB: into this function \n");

    NSArray *docsDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *dirPaths = [docsDir objectAtIndex:0];

    dbPathString = [[NSString alloc] initWithString: [dirPaths stringByAppendingPathComponent:@"person.db"]];

    NSFileManager *fileManager = [NSFileManager defaultManager];

    char *err;
    printf("createOrOpenDB: into this function before if statement \n");
    if(![fileManager fileExistsAtPath:dbPathString]){
        const char *dbPath = [dbPathString UTF8String];
            printf("createOrOpenDB: into this functions 1st if statement \n");
        //create db here
        if(sqlite3_open(dbPath, &personDB) ==SQLITE_OK){
            const char *sql_stnt = "CREATE TABLE IF NOT EXISTS PERSONS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, AGE INTEGER)";
            if(sqlite3_exec(personDB, sql_stnt, NULL, NULL, &err) !=SQLITE_OK){
                printf("Failed to create table\n");
            }
            sqlite3_close(personDB);
            printf("createOrOpenDB: database table created\n");
        }
    }
}

추가 버튼을 누르면 오류가 발생하지 않습니다. 그러나 데이터를 추가하지 않습니다. NSLog in이 xcode 8에서 작동하지 않습니다. 그래서 나는 대신 printf했다. 그리고 내 코드는 if 문 전에 중단됩니다. 아무도 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?

KAR

이렇게하세요

+(DBManager*)getSharedInstance{
    if (!sharedInstance) {
        sharedInstance = [[super allocWithZone:NULL]init];
        [sharedInstance createDB];
    }
    return sharedInstance;
}

-(BOOL)createDB{
    NSString *docsDir;
    NSArray *dirPaths;
    // Get the documents directory
    dirPaths = NSSearchPathForDirectoriesInDomains
    (NSDocumentDirectory, NSUserDomainMask, YES);
    docsDir = dirPaths[0];
    // Build the path to the database file
    databasePath = [[NSString alloc] initWithString:
                    [docsDir stringByAppendingPathComponent: @"student.db"]];
    BOOL isSuccess = YES;
    NSFileManager *filemgr = [NSFileManager defaultManager];
    if ([filemgr fileExistsAtPath: databasePath ] == YES)
    {
        const char *dbpath = [databasePath UTF8String];
        if (sqlite3_open(dbpath, &database) == SQLITE_OK)
        {
            char *errMsg;
            const char *sql_stmt = "create table if not exists studentsDetail (regno integer primary key, name text, department text, year text)";
            if (sqlite3_exec(database, sql_stmt, NULL, NULL, &errMsg)
                != SQLITE_OK)
            {
                isSuccess = NO;
                NSLog(@"Failed to create table");
            }
            else
            {
                NSLog(@"Table Created Successfully");
            }
            sqlite3_close(database);
            return  isSuccess;
        }
        else {
            isSuccess = NO;
            NSLog(@"Failed to open/create database");
        }
        sqlite3_finalize(statement);
    }
    return isSuccess;
   // NSLog(@"database %@", isSuccess);
}

이 테이블에 데이터저장하려면

- (BOOL) saveData:(NSString*)registerNumber name:(NSString*)name
       department:(NSString*)department year:(NSString*)year;
{
    const char *dbpath = [databasePath UTF8String];
    if (sqlite3_open(dbpath, &database) == SQLITE_OK)
    {
        NSString *insertSQL = [NSString stringWithFormat:@"insert into studentsDetail (regno,name, department, year) values (\"%ld\",\"%@\", \"%@\", \"%@\")",(long)[registerNumber integerValue], name, department, year];
                                const char *insert_stmt = [insertSQL UTF8String];
                                sqlite3_prepare_v2(database, insert_stmt,-1, &statement, NULL);
                                if (sqlite3_step(statement) == SQLITE_DONE)
                                {
                                    return YES;
                                }
                                else {
                                    return NO;
                                }
                                sqlite3_reset(statement);
                                }
                                return NO;
                                }

테이블이 없을 때마다 테이블을 생성합니다.

희망 t가 당신을 도울 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iOS에서 sqlite3 데이터베이스 테이블을 업데이트 할 수 없습니다.

분류에서Dev

Sqlite3 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

데이터베이스 테이블에 값을 삽입 할 수 없습니다.

분류에서Dev

sqlite3 swift의 sqlite_sequence 테이블에 삽입 할 수 없습니다.

분류에서Dev

cocos2dx의 sqlite3 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

iOS에서 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

CodeIgniter 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

PHP / MySQL에서 데이터베이스 테이블의 모든 행에 테이블을 만들거나 삽입 할 수 있습니까?

분류에서Dev

PHP / MySQL에서 데이터베이스 테이블의 모든 행에 테이블을 만들거나 삽입 할 수 있습니까?

분류에서Dev

데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

분류에서Dev

iOS의 sqlite 데이터베이스에서 테이블을 삭제할 수 없습니다.

분류에서Dev

데이터베이스에 변수 세션을 삽입 할 수 없습니다.

분류에서Dev

데이터베이스에 변수 세션을 삽입 할 수 없습니다.

분류에서Dev

테이블에 데이터를 삽입 할 수 없습니다.

분류에서Dev

데이터베이스에 값을 삽입 할 수 없습니다.

분류에서Dev

데이터베이스에 값을 삽입 할 수 없습니다.

분류에서Dev

CodeIgniter 내 사진을 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

파이썬으로 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

MySQL 원격 데이터베이스 테이블을 로컬 데이터베이스 테이블에 어떻게 삽입 할 수 있습니까?

분류에서Dev

SqLite C ++, 데이터베이스를 만들 수 있지만 테이블에 아무것도 삽입 할 수 없음

분류에서Dev

무들은 데이터베이스 PHP에 레코드를 삽입 할 수 없습니다.

분류에서Dev

무들은 데이터베이스 PHP에 레코드를 삽입 할 수 없습니다.

분류에서Dev

codeigniter에서 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

데이터베이스에 여러 테이블을 만들 수 없습니다.

분류에서Dev

'Ė'문자는 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

제출 후 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

로컬 데이터베이스에 삽입 할 수 없습니다.

분류에서Dev

Java의 MySQL 데이터베이스에 '를 삽입 할 수 없습니다.

Related 관련 기사

  1. 1

    iOS에서 sqlite3 데이터베이스 테이블을 업데이트 할 수 없습니다.

  2. 2

    Sqlite3 데이터베이스에 삽입 할 수 없습니다.

  3. 3

    데이터베이스 테이블에 값을 삽입 할 수 없습니다.

  4. 4

    sqlite3 swift의 sqlite_sequence 테이블에 삽입 할 수 없습니다.

  5. 5

    cocos2dx의 sqlite3 데이터베이스에 삽입 할 수 없습니다.

  6. 6

    iOS에서 mysql 데이터베이스에 데이터를 삽입 할 수 없습니다.

  7. 7

    CodeIgniter 데이터베이스에 삽입 할 수 없습니다.

  8. 8

    PHP / MySQL에서 데이터베이스 테이블의 모든 행에 테이블을 만들거나 삽입 할 수 있습니까?

  9. 9

    PHP / MySQL에서 데이터베이스 테이블의 모든 행에 테이블을 만들거나 삽입 할 수 있습니까?

  10. 10

    데이터베이스에 데이터를 삽입 할 수 없습니다.

  11. 11

    MySQL 데이터베이스에 데이터를 삽입 할 수 없습니다.

  12. 12

    iOS의 sqlite 데이터베이스에서 테이블을 삭제할 수 없습니다.

  13. 13

    데이터베이스에 변수 세션을 삽입 할 수 없습니다.

  14. 14

    데이터베이스에 변수 세션을 삽입 할 수 없습니다.

  15. 15

    테이블에 데이터를 삽입 할 수 없습니다.

  16. 16

    데이터베이스에 값을 삽입 할 수 없습니다.

  17. 17

    데이터베이스에 값을 삽입 할 수 없습니다.

  18. 18

    CodeIgniter 내 사진을 데이터베이스에 삽입 할 수 없습니다.

  19. 19

    파이썬으로 데이터베이스에 삽입 할 수 없습니다.

  20. 20

    MySQL 원격 데이터베이스 테이블을 로컬 데이터베이스 테이블에 어떻게 삽입 할 수 있습니까?

  21. 21

    SqLite C ++, 데이터베이스를 만들 수 있지만 테이블에 아무것도 삽입 할 수 없음

  22. 22

    무들은 데이터베이스 PHP에 레코드를 삽입 할 수 없습니다.

  23. 23

    무들은 데이터베이스 PHP에 레코드를 삽입 할 수 없습니다.

  24. 24

    codeigniter에서 데이터베이스에 삽입 할 수 없습니다.

  25. 25

    데이터베이스에 여러 테이블을 만들 수 없습니다.

  26. 26

    'Ė'문자는 데이터베이스에 삽입 할 수 없습니다.

  27. 27

    제출 후 데이터베이스에 삽입 할 수 없습니다.

  28. 28

    로컬 데이터베이스에 삽입 할 수 없습니다.

  29. 29

    Java의 MySQL 데이터베이스에 '를 삽입 할 수 없습니다.

뜨겁다태그

보관