Как создать регистрационную форму и сохранить данные на sqlite? - PullRequest
0 голосов
/ 31 октября 2011

Я делаю регистрационную форму, в которой у меня есть две страницы для завершения процесса регистрации.

page1 содержит:

У меня есть 8 текстовых полей и одна кнопка отправки на странице 1 ...

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

страница 2 содержит

У меня есть 8 текстовых полей и две кнопки: Изменить и продолжить на странице 2 ... эта страница должна содержать все значения текстового поля page1, чтобы он мог проверить правильность введенного им значения или нет, а если нет, то он сможет отредактировать их, сохранить и продолжить работу .....

ниже код моей страницы 1: .h файл

#import <UIKit/UIKit.h>
#import "/usr/include/sqlite3.h"
#import "Confirmation_form.h"

@interface Registration_Form : 

UIViewController<UITextFieldDelegate> {
    Confirmation_form *con_form;

    sqlite3 *test1DB;

    IBOutlet UITextField *UserName;
    IBOutlet UITextField *Password;
    IBOutlet UITextField *ConfirmPassword;
    IBOutlet UITextField *Name;
    IBOutlet UITextField *Email;
    IBOutlet UITextField *ContactNO;
    IBOutlet UITextField *MobileNo;
    IBOutlet UITextField *Address;
    NSString *databasePath;

}
@property(nonatomic,retain)IBOutlet UITextField *UserName;

@property(nonatomic,retain)IBOutlet UITextField *Password;

@property(nonatomic,retain)IBOutlet UITextField *ConfirmPassword;

@property(nonatomic,retain)IBOutlet UITextField *Name;

@property(nonatomic,retain)IBOutlet UITextField *Email;

@property(nonatomic,retain)IBOutlet UITextField *ContactNO;

@property(nonatomic,retain)IBOutlet UITextField *MobileNo;

@property(nonatomic,retain)IBOutlet UITextField *Address;


-(IBAction) submit;

это мой файл .m:

#import "Registration_Form.h"


@implementation Registration_Form
@synthesize UserName,Password,ConfirmPassword,Name,Email,ContactNO,MobileNo,Address;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {

    NSString *docsDir;

    NSArray *dirPaths;


    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = [dirPaths objectAtIndex:0];

    databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"test1.db"]];


    NSFileManager *filemgr = [NSFileManager defaultManager];

    if([filemgr fileExistsAtPath: databasePath ] == NO)
    {
        const char *dbpath = [databasePath UTF8String];

        if(sqlite3_open(dbpath, &test1DB) ==SQLITE_OK)
        {
            char *errMsg;

            const char *sql_stmt = "CREATE TABLE IF NOT EXISTS test (ID INTEGER PRIMARY KEY AUTOINCREMENT, USERNAME TEXT, PASSWORD TEXT, CONFIRMPASSWORD TEXT, NAME TEXT, EMAIL TEXT, CONTACTNO MUMBER, MOBILENO NUMBER,ADDRESS TEXT)";


            if(sqlite3_exec(test1DB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
            {
                //status.text = @"Failed to create table";
            }
            sqlite3_close(test1DB);
        }else {
            //status.text = @"Failed to open/create database";
        }

    }
    [filemgr release];
    [super viewDidLoad];
}


-(void)submit
{

sqlite3_stmt  *statement;

    const char *dbpath = [databasePath UTF8String];

    if (sqlite3_open(dbpath, &test1DB) == SQLITE_OK)
    {
        NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO test(UserName, 

Password, ConfirmPassword, Name, Email, ContactNO, MobileNo, Address) VALUES (\"%@\", \"%@\", 

\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\")",UserName.text, Password.text, ConfirmPassword.text, 

Name.text, Email.text, ContactNO.text, MobileNo.text, Address.text];

        const char *insert_stmt = [insertSQL UTF8String];

        sqlite3_prepare_v2(test1DB, insert_stmt, -1, &statement, NULL);

        if(sqlite3_step(statement) == SQLITE_DONE)
        {
            //status.text = @"Contact added";
            UserName.text = @"";
            Password.text = @"";
            ConfirmPassword.text = @"";
            Name.text = @"";
            Email.text = @"";
            ContactNO.text = @"";
            MobileNo.text = @"";
            Address.text = @"";


        }else {
            //status.text = @"Failed to add Contact";
        }
        sqlite3_finalize(statement);
        sqlite3_close(test1DB);

    }

    con_form = [[Confirmation_form alloc] initWithNibName:@"Confirmation_form" bundle:[NSBundle 

mainBundle]];

    [self.navigationController pushViewController:con_form animated:YES];

}

пожалуйста, помогите мне

благодарственное в

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

Отличное руководство по чистому sqlite здесь .

Но я бы предложил просто использовать свойства, если только эти данные не нужны после второй формы.

Кроме того, если вы собираетесь делать много работы с БД, я бы предложил FMDatabase .

0 голосов
/ 31 октября 2011

Прежде всего, вы должны создать объект NSString и его свойство в вашем 1-м контроллере, а не после того, как сохраните текстовое значение в этом NSString.2ndcontroller.

Путем создания объекта 1stcontroller. like this 1-й контроллер * urobject = [[1stcontroller alloc] init];yourtextfiled = urobject.passstring;

Надеюсь, это поможет вам

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