iOS 原生sqlite3的使用方法
本文介绍了iOS原生sqlite3的使用方法,分享给大家,具体如下:
SQLite?
- SQLit是一个开源、轻型嵌入式关系数据库,诞生于2000年5月
- 占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
- 能够支持Windows/Linux/Unix等等主流的操作系统
- 比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快
SQL语句常用操作
增、删、改、查,CRUD,Create[新建],Retrieve[检索],Update[更新],Delete[删除]。
SQL语法写法特点
1、不区分大小写(CREATE=create)
2、每条语句以分号(;)结尾
3、关键字建议大写
SQL语句常用关键字
select、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等
- 数据定义语句(DDL):包括create和drop等操作,在数据库中创建新表或删除表(createtable或droptable)
- 数据操作语句(DML):包括insert、update、delete等操作,分别用于添加、修改、删除表中的数据
- 数据查询语句(DQL):可以用于查询获得表中的数据,关键字select是DQL(也是所有SQL)用得最多的操作,其他DQL常用的关键字有where,orderby,groupby和having
//ViewController.m //sqlite3 // //Createdby周玉on2017/12/13. //Copyright©2017年guidekj.Allrightsreserved. // #import"ViewController.h" #import#defineKUIScreenWidth[UIScreenmainScreen].bounds.size.width #defineKUIScreenHeight[UIScreenmainScreen].bounds.size.height #defineFILE_NAME@"saas.sqlite" staticsqlite3*db=nil; @interfaceViewController() @end @implementationViewController -(void)viewDidLoad{ [superviewDidLoad]; self.title=@"sqlite3"; //DDB //[selfopenDB]; //[selfcloseDB]; //DDL //[selfcreateTable]; //[selfdropTable]; //DML //[selfinsertData]; //[selfupdateData]; //[selfdeleteData]; //DQL [selfqueryData]; } #pragmamark查询 -(void)queryData{ sqlite3*newDB=[selfopenDB]; sqlite3_stmt*statement=nil; NSString*sqlStr=@"SELECT*FROMSAAS_PERSON"; intresult=sqlite3_prepare_v2(newDB,sqlStr.UTF8String,-1,&statement,NULL); if(result==SQLITE_OK){ //遍历查询结果 if(!(sqlite3_step(statement)==SQLITE_DONE)){ while(sqlite3_step(statement)==SQLITE_ROW){ intID=sqlite3_column_int(statement,0); constunsignedchar*name=sqlite3_column_text(statement,1); constunsignedchar*sex=sqlite3_column_text(statement,2); intage=sqlite3_column_int(statement,3); constunsignedchar*description=sqlite3_column_text(statement,4); NSLog(@"ID=%d,name=%@,sex=%@,age=%d,description=%@",ID,[NSStringstringWithUTF8String:(constchar*)name],[NSStringstringWithUTF8String:(constchar*)sex],age,[NSStringstringWithUTF8String:(constchar*)description]); } }else{ NSLog(@"查询语句完成"); } }else{ NSLog(@"查询语句不合法"); } sqlite3_finalize(statement); [selfcloseDB]; } #pragmamark删除数据记录 -(void)deleteData{ sqlite3*newDB=[selfopenDB]; sqlite3_stmt*statement=nil; NSString*sqlStr=@"DELETEFROMSAAS_PERSONWHERENAME='王鹏飞'"; intresult=sqlite3_prepare_v2(newDB,sqlStr.UTF8String,-1,&statement,NULL); if(result==SQLITE_OK){ if(sqlite3_step(statement)==SQLITE_DONE){ NSLog(@"删除操作完成"); } }else{ NSLog(@"删除操作不合法"); } sqlite3_finalize(statement); [selfcloseDB]; } #pragmamark更新数据记录 -(void)updateData{ sqlite3*newDB=[selfopenDB]; sqlite3_stmt*statement=nil; NSString*sqlStr=@"UPDATESAAS_PERSONSETDESCRIPTION='喜欢运动,旅游'WHERENAME='周玉'"; intresult=sqlite3_prepare_v2(newDB,sqlStr.UTF8String,-1,&statement,NULL); if(result==SQLITE_OK){ if(sqlite3_step(statement)==SQLITE_DONE){ NSLog(@"更新信息完成"); } }else{ //[logging]nosuchcolumn:DESCRIPT(KEY拼写错误)---更新信息不合法 NSLog(@"更新信息不合法"); } sqlite3_finalize(statement); [selfcloseDB]; } #pragmamark新增数据记录 -(void)insertData{ sqlite3*newDB=[selfopenDB]; sqlite3_stmt*statement=nil; //NSString*sqlStr=@"INSERTINTOSAAS_PERSON(NAME,SEX,AGE,DESCRIPTION)VALUES('周玉','男',28,'开朗乐观')"; //NSString*sqlStr=@"INSERTINTOSAAS_PERSON(NAME,SEX,AGE,DESCRIPTION)VALUES('王鹏飞','女',27,'开朗乐观')"; //NSString*sqlStr=@"INSERTINTOSAAS_PERSON(NAME,SEX,AGE,DESCRIPTION)VALUES('李梅','女',20,'年轻可爱��')"; NSString*sqlStr=@"INSERTINTOSAAS_PERSON(NAME,SEX,AGE,DESCRIPTION)VALUES('sumit','男',15,'小朋友的年纪')"; //检验合法性 intresult=sqlite3_prepare_v2(newDB,sqlStr.UTF8String,-1,&statement,NULL); if(result==SQLITE_OK){ //判断语句执行完毕 if(sqlite3_step(statement)==SQLITE_DONE){ NSLog(@"插入的信息完成"); } }else{ NSLog(@"插入的信息不合法"); } sqlite3_finalize(statement); [selfcloseDB]; } #pragmamark创建表 -(void)createTable{ sqlite3*newDB=[selfopenDB]; //char*sql="CREATETABLEIFNOTEXISTSt_person(IDINTEGERPRIMARYKEYAUTOINCREMENTNOTNULL,NAMETEXT,SEXTEXT,AGEINTEGER,DESCRIPTIONTEXT);"; NSString*sqlStr=@"CREATETABLEIFNOTEXISTSSAAS_PERSON(IDINTEGERPRIMARYKEYAUTOINCREMENTNOTNULL,NAMETEXT,SEXTEXT,AGEINTEGER,DESCRIPTIONTEXT);"; char*error=NULL; intresult=sqlite3_exec(newDB,sqlStr.UTF8String,NULL,NULL,&error); if(result==SQLITE_OK){ NSLog(@"创建表成功"); }else{ NSLog(@"创建表失败=%s",error); } [selfcloseDB]; } #pragmamark删除表 -(void)dropTable{ sqlite3*newDB=[selfopenDB]; NSString*sqlStr=@"DROPTABLEt_person"; char*error=NULL; intresult=sqlite3_exec(newDB,sqlStr.UTF8String,NULL,NULL,&error); if(result==SQLITE_OK){ NSLog(@"删除表成功"); }else{ NSLog(@"删除表失败=%s",error); } [selfcloseDB]; } #pragmamark打开或者创建数据库 -(sqlite3*)openDB{ if(!db){ //1.获取document文件夹的路径 //参数1:文件夹的名字参数2:查找域参数3:是否使用绝对路径 NSString*documentPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0]; //获取数据库文件的路径 NSString*dbPath=[documentPathstringByAppendingPathComponent:@"saas.sqlite"]; NSLog(@"%@",dbPath); //判断document中是否有sqlite文件 intresult=sqlite3_open([dbPathUTF8String],&db); if(result==SQLITE_OK){ NSLog(@"打开数据库"); }else{ [selfcloseDB]; NSLog(@"打开数据库失败"); } } returndb; } #pragmamark关闭数据库 -(void)closeDB{ intresult=sqlite3_close(db); if(result==SQLITE_OK){ NSLog(@"数据库关闭成功"); db=nil; }else{ NSLog(@"数据库关闭失败"); } } @end
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。