zoukankan      html  css  js  c++  java
  • IOS 数据库操作

    参考:http://www.cnblogs.com/hanjun/archive/2012/10/29/2744573.html

    总结4点:

    1)open数据库

    2)插入数据

    3)查询数据

    4)close数据库

     一、新建Empty Appliation,添加一个HomeViewController,和一个组件libsqlite3.dylib,来支持对sqlite3的连接,关闭,增删改查等操作。

    1. HomeViewController.h代码:

    #import <UIKit/UIKit.h>
    #import "sqlite3.h"
     
    @interface HomeViewController : UIViewController{
     
        sqlite3 *db; //声明一个sqlite3数据库
    }
     
    - (NSString *)filePath;//数据库文件的路径。一般在沙箱的Documents里边操作
     
    @end
     

    2. HomeViewController.m代码:

     #import "HomeViewController.h"

     
     
    @interface HomeViewController ()
     
    @end
     
    @implementation HomeViewController
     

    //该方法用于返回数据库在Documents文件夹中的全路径信息 

    - (NSString *)filePath{
     
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDir = [paths objectAtIndex:0];
        return [documentsDir stringByAppendingPathComponent:@"Contacts.sqlite"];
    }
     

    //打开数据库的方法 

    - (void)openDB{
     
        if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) {
            sqlite3_close(db);
            NSAssert(0, @"数据库打开失败。");
        }
    }
     
    //插入数据方法
    - (void)insertRecordIntoTableName:(NSString *)tableName
                           withField1:(NSString *)field1 field1Value:(NSString *)field1Value
                            andField2:(NSString *)field2 field2Value:(NSString *)field2Value
                            andField3:(NSString *)field3 field3Value:(NSString *)field3Value{
    /*方法1:经典方法
        NSString *sql = [NSString stringWithFormat:@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES('%@', '%@', '%@')", tableName, field1, field2, field3, field1Value, field2Value, field3Value];
        char *err;
        if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
            sqlite3_close(db);
            NSAssert(0, @"插入数据错误!");
        }
        */

       //方法2:变量的绑定方法 

        NSString *sql = [NSString stringWithFormat:@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES (?, ?, ?)",tableName, field1, field2, field3];
        
        sqlite3_stmt *statement;
        
        if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
            sqlite3_bind_text(statement, 1, [field1Value UTF8String], -1,NULL);
            sqlite3_bind_text(statement, 2, [field2Value UTF8String], -1,NULL);
            sqlite3_bind_text(statement, 3, [field3Value UTF8String], -1,NULL);
        }
        if (sqlite3_step(statement) != SQLITE_DONE) {
            NSAssert(0, @"插入数据失败!");
            sqlite3_finalize(statement);
        }
     
                                    
    }
    //查询数据
    - (void)getAllContacts{
     
        NSString *sql = @"SELECT * FROM members";
        sqlite3_stmt *statement;
        
        if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
            while (sqlite3_step(statement) == SQLITE_ROW) {
                
                char *name = (char *)sqlite3_column_text(statement, 0);
                NSString *nameStr = [[NSString alloc] initWithUTF8String:name];
                
                char *email = (char *)sqlite3_column_text(statement, 1);
                NSString *emailStr = [[NSString alloc] initWithUTF8String:email];
                
                char *birthday = (char *)sqlite3_column_text(statement, 2);
                NSString *birthdayStr = [[NSString alloc] initWithUTF8String:birthday];
                
                NSString *info = [[NSString alloc] initWithFormat:@"%@ - %@ - %@",
                                  nameStr, emailStr, birthdayStr];
                
                NSLog(info);
                
                [nameStr release];
                [emailStr release];
                [birthdayStr release];
                [info release];
            }
            sqlite3_finalize(statement);
        }
    }
     
    - (void)viewDidLoad
    {
        [self openDB];
       
        [self insertRecordIntoTableName:@"members" withField1:@"name" field1Value:@"李1" andField2:@"email" field2Value:@"df@qq.com" andField3:@"birthday" field3Value:@"12-45-78"];
        
        [self insertRecordIntoTableName:@"members" withField1:@"name" field1Value:@"李2" andField2:@"email" field2Value:@"df@qq.com" andField3:@"birthday" field3Value:@"12-45-78"];
        
        [self insertRecordIntoTableName:@"members" withField1:@"name" field1Value:@"李3" andField2:@"email" field2Value:@"df@qq.com" andField3:@"birthday" field3Value:@"12-45-78"];
        
        
        
        [self getAllContacts];
        
        sqlite3_close(db);
        
        [super viewDidLoad];
    }
     
    @end
     
     
     
  • 相关阅读:
    超市商品购买与管理系统
    以后写博客必须有计划一点
    关于变量初始化的问题
    先思考,后动手。
    springmvc springboot springcloud 三者的区别?
    3.20计算机组成原理课堂笔记
    作业1(基本题)JSP基本语法相关练习
    下载 Java
    地区sql
    maven ssm 编译异常记录:
  • 原文地址:https://www.cnblogs.com/yuyu-2012/p/4766558.html
Copyright © 2011-2022 走看看