ios Sqlite3的简单使用 增删改查

- (void)viewDidLoad {

    [superviewDidLoad];

    

    // 数据库操作句柄

    sqlite3 *dbHandle;

    

    // 数据库路径

    NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0];

    NSString *dbPath = [documentPathstringByAppendingPathComponent:@"stock.db"];

    

   //打开数据库获取句柄不存在则会创建

    int result =sqlite3_open([dbPathUTF8String], &dbHandle);

    if (result ==SQLITE_OK) {

        //创建表

        NSString * sql = @"CREATE TABLE IF NOT EXISTS t_stock_info (Number text PRIMARY KEY,Name text NOT NULL,Data text NOT NULL,FinalPrice float NOT NULL);";

        char *error =NULL;

        result = sqlite3_exec(dbHandle, [sql UTF8String], NULL,NULL, &error);

        if (result ==SQLITE_OK) {

            

        }

        else

        {

            [ShowAlertControllershowAlertInVC:self.view.window.rootViewControllermessage:@"Error"title:@"Open / Create table failed!"];

        }

    }

    else

    {

        [ShowAlertControllershowAlertInVC:self.view.window.rootViewControllermessage:@"Error"title:@"Open / Create database failed!"];

    }

    

    [selfinsertDataNumber:@"600582"name:@"天地科技"data:@"2017.2.21"finalPrice:5.4toSqliteDB:dbHandlewithTableName:@"t_stock_info"];

    [selfinsertDataNumber:@"002266"name:@"浙富控股"data:@"2017.2.23"finalPrice:5.8toSqliteDB:dbHandlewithTableName:@"t_stock_info"];

    

    [selfgetInfoFromTable:@"t_stock_info"inSqliteDB:dbHandle];

    

    [selfdeletName:@"Name"realName:@"浙富控股"inSqliteDB:dbHandletbName:@"t_stock_info"];

    

    [selfupdatePrice:5.7name:@"FinalPrice"inSqliteDB:dbHandletbName:@"t_stock_info"];

}


#pragma mark -

-(void)insertDataNumber:(NSString *)number name:(NSString *)name data:(NSString *)data finalPrice:(float)price toSqliteDB:(sqlite3 *)dbHandle withTableName:(NSString *)tbName

{

    NSString *sql=[NSStringstringWithFormat:@"INSERT INTO %@ (Number,Name,Data,FinalPrice) VALUES ('%@','%@','%@',%f);",tbName,number,name,data,price];

    

    char *errmsg =NULL;

    int result =sqlite3_exec(dbHandle, sql.UTF8String,NULL,NULL, &errmsg);

    if (result ==SQLITE_OK) {

        

    }

    else

    {

        

    }

}


#pragma mark -

-(void)getInfoFromTable:(NSString *)tbName inSqliteDB:(sqlite3 *)dbHandle

{

    NSString *sql = @"SELECT * FROM t_stock_info WHERE FinalPrice>=0;";

    sqlite3_stmt *stmt =NULL;


   //进行查询前的准备工作

    int result =sqlite3_prepare_v2(dbHandle, [sqlUTF8String], -1, &stmt,NULL);

    if (result ==SQLITE_OK) {//SQL语句没有问题


    // 每调用一次sqlite3_step函数,stmt就会指向下一条记录

    NSLog(@"Begin get info");

    while (sqlite3_step(stmt) ==SQLITE_ROW) {//找到一条记录

    // 取出数据

         char *number = (char *)sqlite3_column_text(stmt,0);

         char *name = (char *)sqlite3_column_text(stmt,1);

         char *data = (char *)sqlite3_column_text(stmt,2);

         float price =sqlite3_column_double(stmt,3);

        

        NSLog(@"number = %@ ,name = %@ ,data %@,price %f",[NSStringstringWithUTF8String:number],[NSStringstringWithUTF8String:name],[NSStringstringWithUTF8String:data],price);

        }

    }

    else

    {

        

    }

}


#pragma mark -

-(void)updatePrice:(float)price name:(NSString *)name inSqliteDB:(sqlite3 *)dbHandle tbName:(NSString *)tbName

{

    NSString *sql = [NSStringstringWithFormat:@"UPDATE %@ SET %@ = %f WHERE Name == '天地科技';",tbName,name,price];

    sqlite3_stmt *stmt =NULL;

    

   //进行查询前的准备工作

    int result =sqlite3_prepare_v2(dbHandle, [sqlUTF8String], -1, &stmt,NULL);

    if (result ==SQLITE_OK) {//SQL语句没有问题

            if (sqlite3_step(stmt) ==SQLITE_DONE) {

                sqlite3_finalize(stmt);

                

                [selfgetInfoFromTable:tbNameinSqliteDB:dbHandle];

            }

    }

    else

    {

        

    }

}


#pragma mark -

-(void)deletName:(NSString *)name realName:(NSString *)realName inSqliteDB:(sqlite3 *)dbHandle tbName:(NSString *)tbName

{

    NSString *sql = [NSStringstringWithFormat:@"DELETE FROM %@ WHERE %@ == '%@';",tbName,name,realName];

    sqlite3_stmt *stmt =NULL;

    

   //进行查询前的准备工作

    int result =sqlite3_prepare_v2(dbHandle, [sqlUTF8String], -1, &stmt,NULL);

    if (result ==SQLITE_OK) {//SQL语句没有问题

        if (sqlite3_step(stmt) ==SQLITE_DONE) {

            sqlite3_finalize(stmt);

            

            [selfgetInfoFromTable:tbNameinSqliteDB:dbHandle];

        }

    }

    else

    {

        

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值