加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Sqlite3

发布时间:2020-12-13 00:11:26 所属栏目:百科 来源:网络整理
导读:#import Foundation/Foundation.h #import "sqlite3.h" @interface SqlUtility : NSObject { sqlite3 *db; } - ( NSString *) dataFilePath; - ( BOOL ) openDB; - ( void ) closeDB; - ( void ) addCourse:( NSString *)name andTime:( NSString *)time and

#import <Foundation/Foundation.h>

#import "sqlite3.h"

@interface SqlUtility : NSObject

{

sqlite3 *db;

}

- (NSString *) dataFilePath;

- (BOOL) openDB;

- (void) closeDB;

- (void) addCourse:(NSString *)name andTime:(NSString *)time andPlace:(NSString *)place;

- (NSMutableArray *) getCourse;

- (void) Clear;

- (void) Delete:(NSString *)delete_name;

@end


// SqlUtility.m

#import "SqlUtility.h"

@implementation SqlUtility

//返回数据库的路径名,只要名字僞data.mysqlite3,就是指同一个数据库

- (NSString *) dataFilePath

{

NSArray *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *documentsDirectory = [path objectAtIndex:0];

return [documentsDirectory stringByAppendingPathComponent:@"data.mysqlite3"];

}

- (BOOL) openDB

{

//NSLog(@"pass_openDB");

//打开数据库

if (sqlite3_open([[selfdataFilePath] UTF8String],&db) !=SQLITE_OK) {

NSLog(@"打开数据库失败!");

return NO;

}

else {

NSLog(@"打开数据库成功!");

}

//错误信息

char *errorMsg;

//创建表的sql语句

//注意是exists,不是exist

NSString *createSQL =@"create table if not exists monday (name text primary key,time text,place text);";

//创建表

if (sqlite3_exec(db,[createSQLUTF8String],NULL,&errorMsg)!= SQLITE_OK) {

sqlite3_close(db);

NSString *error=[[NSStringalloc]initWithUTF8String:errorMsg];

NSLog(@"创建表失败!%@",error);

}

return YES;

}

-(void) closeDB

{

sqlite3_close(db);

}

- (void) addCourse:(NSString *)name andTime:(NSString *)time andPlace:(NSString *)place

{

NSString *update = [[NSStringalloc] initWithFormat:@"insert into monday(name,time,place) values ('%@','%@','%@');",name,place];

char *errorMsg;

if (sqlite3_exec(db,[updateUTF8String],&errorMsg) == SQLITE_OK) {

NSLog(@"数据插入成功!");

sqlite3_free(errorMsg);

}

}

- (NSMutableArray *)getCourse

{

//NSLog(@"pass_get");

NSMutableArray *array=[[NSMutableArrayalloc]init];

//开始查询

NSString *query =@"select name,place from monday";

sqlite3_stmt *statement;

if (sqlite3_prepare_v2(db,[queryUTF8String],-1,&statement,nil) == SQLITE_OK) {

//NSLog(@"pass_query");

//注意后面的参数是SQLITE_ROW

while (sqlite3_step(statement) ==SQLITE_ROW) {

// NSLog(@"pass_step");

//对于每一行,读取列数据

char *name = (char *)sqlite3_column_text(statement,0);

char *time = (char *)sqlite3_column_text(statement,1);

char *place = (char *)sqlite3_column_text(statement,2);

//char*类型转化成nsstring

NSString *nameString=[[NSStringalloc] initWithUTF8String:name];

NSString *timeString=[[NSStringalloc] initWithUTF8String:time];

NSString *placeString=[[NSStringalloc] initWithUTF8String:place];

//3个数据封装在字典里

NSMutableDictionary *dic=[[NSMutableDictionaryalloc] init];

[dic setValue:nameString forKey:@"name"];

[dic setValue:timeString forKey:@"time"];

[dic setValue:placeString forKey:@"place"];

[array addObject:dic];

}

sqlite3_finalize(statement);

}

else {

NSLog(@"fail!");

}

return array;

}

- (void) Clear

{

NSString *delete = [[NSStringalloc] initWithFormat:@"delete from monday;"];

char *errorMsg;

if (sqlite3_exec(db,[deleteUTF8String],&errorMsg) == SQLITE_OK) {

NSLog(@"数据清除成功!");

sqlite3_free(errorMsg);

}

}

- (void) Delete:(NSString *)delete_name

{

NSString *delete = [[NSStringalloc] initWithFormat:@"delete from monday where name='%@';",delete_name];

char *errorMsg;

if (sqlite3_exec(db,&errorMsg) == SQLITE_OK) {

NSLog(@"删除成功!");

sqlite3_free(errorMsg);

}

}

@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读