读数据库

来源:互联网 发布:淘宝是怎么回事 编辑:程序博客网 时间:2024/04/27 20:25

-------------------------h------------


    sqlite3 *contactDB;

    

    NSString *databasePath;



--------------------------m----------------------

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    /*根据路径创建数据库并创建一个表contact(id nametext addresstext phonetext)*/

    

    NSString *docsDir;

    NSArray *dirPaths;

    

    // Get the documents directory

    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    

    docsDir = [dirPaths objectAtIndex:0];

    

    // Build the path to the database file

    databasePath = [[NSStringalloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.db"]];


    NSFileManager *filemgr = [NSFileManagerdefaultManager];

    

    if ([filemgrfileExistsAtPath:databasePath] ==NO

    {

        const char *dbpath = [databasePathUTF8String];

        if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK

        {

            char *errMsg;

            constchar *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT,PHONE TEXT)";

            if (sqlite3_exec(contactDB, sql_stmt,NULL, NULL, &errMsg)!=SQLITE_OK) {

                status.text =@"创建表失败\n";

            }

        }

        else 

        {

            status.text =@"创建/打开数据库失败";

        }

    }

    

}

- (IBAction)SaveToDataBase:(id)sender 

{

    sqlite3_stmt *statement;

    

    constchar *dbpath = [databasePathUTF8String];

    

    if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) {

        NSString *insertSQL = [NSStringstringWithFormat:@"INSERT INTO CONTACTS (name,address,phone) VALUES(\"%@\",\"%@\",\"%@\")",name.text,address.text,phone.text];

        const char *insert_stmt = [insertSQLUTF8String];

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

        if (sqlite3_step(statement)==SQLITE_DONE) {

            status.text =@"已存储到数据库";

            name.text =@"";

            address.text =@"";

            phone.text =@"";

        }

        else

        {

            status.text =@"保存失败";

        }

        sqlite3_finalize(statement);

        sqlite3_close(contactDB);

    }

}

- (IBAction)SearchFromDataBase:(id)sender 

{

    constchar *dbpath = [databasePathUTF8String];

    sqlite3_stmt *statement;

    

    if (sqlite3_open(dbpath, &contactDB) ==SQLITE_OK

    {

        NSString *querySQL = [NSStringstringWithFormat:@"SELECT address,phone from contacts where name=\"%@\"",name.text];

        const char *query_stmt = [querySQLUTF8String];

        if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement,NULL) == SQLITE_OK

        {

            if (sqlite3_step(statement) ==SQLITE_ROW

            {

                NSString *addressField = [[NSStringalloc] initWithUTF8String:(constchar *)sqlite3_column_text(statement, 0)];

                address.text = addressField;

                

                NSString *phoneField = [[NSStringalloc] initWithUTF8String:(constchar *)sqlite3_column_text(statement, 1    )];

                phone.text = phoneField;

                

                status.text =@"已查到结果";

                [addressField release];

                [phoneField release];

            }

            else {

                status.text =@"未查到结果";

                address.text =@"";

                phone.text =@"";

            }

            sqlite3_finalize(statement);

        }

        

        sqlite3_close(contactDB);

    }

}

原创粉丝点击