Вставить в базу данных вопрос - PullRequest
0 голосов
/ 26 января 2012

Это действительно странно для меня, я создаю приложение, при первом просмотре (просмотр входа в систему) я ввожу адрес электронной почты и пароль, а затем проверяю это из базы данных, и если все в порядке, то перехожу в новый просмотр и в этом представлении я заполняю некоторые поля, а затем введите эти данные в базу данных, но они не будут вводиться в мою базу данных. это проверка вида входа в систему

-(NSInteger)verifyLoginEmail:(NSString *)email Password:(NSString *)password
{
       NSInteger a=1;
        const char *selectQuery="SELECT * FROM CreateProfile where email=? AND password=?";
        sqlite3_stmt *statement;
        if(sqlite3_open([destPath UTF8String],&studentDB)==SQLITE_OK)
        {
            //sqlite3_bind_int(statement, 1, sid);

            if(sqlite3_prepare_v2(studentDB,selectQuery, -1, &statement, nil)==SQLITE_OK)
            { 
            sqlite3_bind_text(statement, 1, [email UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(statement, 2, [password UTF8String], -1, SQLITE_TRANSIENT);

                if(sqlite3_step(statement)==SQLITE_ROW)
                {

                    return a;
                }
                else 
                {
                    return 2;
                }

            }
                        sqlite3_finalize(statement);
        }
            sqlite3_close(studentDB);


        return 0;
}

и этот код предназначен для вставки данных из нового представления

-(void)insertName:(NSString *)name Email:(NSString *)email Password:(NSString *)password Pic:(NSString *)pic;
{
    const char *insertQuery="insert into CreateProfile (name,email,pic,password) values (?,?,?,?)";
    sqlite3_stmt *statement;
    if(sqlite3_open([destPath UTF8String],&studentDB)==SQLITE_OK)
    {

        if(sqlite3_prepare_v2(studentDB, insertQuery, -1, &statement, nil)==SQLITE_OK)
        { 
            sqlite3_bind_text(statement, 1, [name UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(statement, 2, [email UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(statement, 3, [pic UTF8String], -1, SQLITE_TRANSIENT);  
            sqlite3_bind_text(statement, 4, [password UTF8String], -1, SQLITE_TRANSIENT); 
            //sqlite3_bind_int(statement, 2, rollno);


        }
        if(sqlite3_step(statement)==SQLITE_DONE){
            UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Profile Created" message:@"Your profile successfully added" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
            [alert show];
            [alert release];
        }
            sqlite3_finalize(statement);
        }
        sqlite3_close(studentDB);

    }

когда я напрямую перехожу к виду из меняющегося вида из главного окна, я могу вводить поля в базу данных, но не могу войти в базу данных при входе в систему, а затем перейти к новому виду

1 Ответ

0 голосов
/ 26 января 2012

В вашем (NSInteger) verifyLoginEmail: (NSString *) электронная почта Пароль: (NSString *) пароль функция

Вы написали

   sqlite3_bind_text(statement, 1, [email UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(statement, 2, [password UTF8String], -1, SQLITE_TRANSIENT);

заменить эти двастроки с линиями, показанными ниже

   sqlite3_bind_text(statement, 0, [email UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(statement, 1, [password UTF8String], -1, SQLITE_TRANSIENT);

В Select Query привязка начинается с 0.и в операторах вставки привязка начинается с 1.

и вместо возврата a возвращает некоторое целочисленное значение, например 1 , поскольку тип возвращаемого вами метода - NSInteger.

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...