sqlite本地数据库使用

sqlite本地数据库使用,第1张

概述      iOS学习之sqlite的创建数据库,表,插入查看数据         iOS sqlite数据库 *** 作。步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib 2、sqlite 的方法 sqlite3          iOS学习之sqlite的创建数据库,表,插入查看数据

iOS sqlite数据库 *** 作。步骤是:

先加入sqlite开发库libsqlite3.dylib,

新建或打开数据库,

创建数据表,

插入数据,

查询数据并打印

1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib


2、sqlite 的方法

sqlite3 *db,数据库句柄,跟文件句柄file很类似

sqlite3_stmt *stmt,这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(),打开数据库,没有数据库时创建。
sqlite3_exec(),执行非查询的SQL语句
sqlite3_step(),在调用sqlite3_prepare后,使用这个函数在记录集中移动。
sqlite3_close(),关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(),取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(),取int类型的数据


3、获取沙盒目录,并创建或打开数据库。

vIEwController.h头文件添加一个成员变量,并包含头文件sqlite3.h

[cpp] view plain copy print ? #import<UIKit/UIKit.h> #import<sqlite3.h> @interfaceVIEwController:UIVIEwController { sqlite3*db; } @end
#import <UIKit/UIKit.h>#import <sqlite3.h>@interface VIEwController : UIVIEwController{    sqlite3 *db;}@end

在.m文件 定义宏,方面后面使用

[cpp] view plain copy print ? #defineDBname@"personinfo.sqlite" #definename@"name" #defineAGE@"age" #defineADDRESS@"address" #definetablename@"PERSONINFO"
#define DBname    @"personinfo.sqlite"#define name      @"name"#define AGE       @"age"#define ADDRESS   @"address"#define tablename @"PERSONINFO"
[cpp] view plain copy print ? NSArray*paths=NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES); Nsstring*documents=[pathsobjectAtIndex:0]; Nsstring*database_path=[documentsstringByAppendingPathComponent:DBname]; if(sqlite3_open([database_pathUTF8String],&db)!=sqlITE_OK){ sqlite3_close(db); NSLog(@"数据库打开失败"); }
   NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES);    Nsstring *documents = [paths objectAtIndex:0];    Nsstring *database_path = [documents stringByAppendingPathComponent:DBname];        if (sqlite3_open([database_path UTF8String],&db) != sqlITE_OK) {        sqlite3_close(db);        NSLog(@"数据库打开失败");    }

sqlite3_open,如果数据不存在,则创建。运行。这是在沙盒目录下能看到数据库文件(如何打开模拟器沙盒目录请参考:iOS学习之iOS沙盒(sandbox)机制和文件 *** 作(一)



4、创建数据表

创建一个独立的执行SQL语句的方法,传入SQL语句,就执行SQL语句

[cpp] view plain copy print ? -(voID)execsql:(Nsstring*)sql { char*err; if(sqlite3_exec(db,[sqlUTF8String],NulL,&err)!=sqlITE_OK){ sqlite3_close(db); NSLog(@"数据库 *** 作数据失败!"); } }
-(voID)execsql:(Nsstring *)sql{    char *err;    if (sqlite3_exec(db,[sql UTF8String],&err) != sqlITE_OK) {        sqlite3_close(db);        NSLog(@"数据库 *** 作数据失败!");    }}
创建数据表PERSONINFO的语句 [cpp] view plain copy print ? Nsstring*sqlCreatetable=@"CREATEtableIFNOTEXISTSPERSONINFO(IDINTEGERPRIMARYKEYautoINCREMENT,nameTEXT,ageINTEGER,addresstEXT)"; [selfexecsql:sqlCreatetable];
Nsstring *sqlCreatetable = @"CREATE table IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY autoINCREMENT,name TEXT,age INTEGER,address TEXT)";    [self execsql:sqlCreatetable];
运行程序,数据表创建了。怎么知道数据表创建了呢?我们用火狐的sqlite Manager插件工具打开数据库文件看看。可以在火狐浏览器里安装这个插件。打开


四个字段都出现是表中了。

5、插入数据: [cpp] view plain copy print ? Nsstring*sql1=[NsstringstringWithFormat: @"INSERTINTO'%@'('%@','%@','%@')VALUES('%@','%@')", tablename,name,AGE,ADDRESS,@"张三",@"23",@"西城区"]; Nsstring*sql2=[NsstringstringWithFormat: @"INSERTINTO'%@'('%@',@"老六",@"20",@"东城区"]; [selfexecsql:sql1]; [selfexecsql:sql2];
Nsstring *sql1 = [Nsstring stringWithFormat:					 @"INSERT INTO '%@' ('%@','%@') VALUES ('%@','%@')",tablename,@"张三",@"23",@"西城区"];        Nsstring *sql2 = [Nsstring stringWithFormat:                      @"INSERT INTO '%@' ('%@',@"老六",@"20",@"东城区"];    [self execsql:sql1];    [self execsql:sql2];
运行程序,插入两条数据,用火狐的sqlite工具查看


6、查询数据库并打印数据 [cpp] view plain copy print ? Nsstring*sqlquery=@"SELECT*FROMPERSONINFO"; sqlite3_stmt*statement; if(sqlite3_prepare_v2(db,[sqlqueryUTF8String],-1,&statement,nil)==sqlITE_OK){ while(sqlite3_step(statement)==sqlITE_ROW){ char*name=(char*)sqlite3_column_text(statement,1); Nsstring*nsnameStr=[[Nsstringalloc]initWithUTF8String:name]; intage=sqlite3_column_int(statement,2); char*address=(char*)sqlite3_column_text(statement,3); Nsstring*nsAddressstr=[[Nsstringalloc]initWithUTF8String:address]; NSLog(@"name:%@age:%daddress:%@",nsnameStr,age,nsAddressstr); } } sqlite3_close(db); @H_403_530@ Nsstring *sqlquery = @"SELECT * FROM PERSONINFO"; sqlite3_stmt * statement; if (sqlite3_prepare_v2(db,[sqlquery UTF8String],nil) == sqlITE_OK) { while (sqlite3_step(statement) == sqlITE_ROW) { char *name = (char*)sqlite3_column_text(statement,1); Nsstring *nsnameStr = [[Nsstring alloc]initWithUTF8String:name]; int age = sqlite3_column_int(statement,2); char *address = (char*)sqlite3_column_text(statement,3); Nsstring *nsAddressstr = [[Nsstring alloc]initWithUTF8String:address]; NSLog(@"name:%@ age:%d address:%@",nsAddressstr); } } sqlite3_close(db);打印结果: [cpp] view plain copy print ? 2012-06-2913:25:32.205sqlitDemo[3587:f803]name:张三age:23address:西城区 2012-06-2913:25:32.206sqlitDemo[3587:f803]name:老六age:20address:东城区
2012-06-29 13:25:32.205 sqlitDemo[3587:f803] name:张三  age:23  address:西城区2012-06-29 13:25:32.206 sqlitDemo[3587:f803] name:老六  age:20  address:东城区
总结

以上是内存溢出为你收集整理的sqlite本地数据库使用全部内容,希望文章能够帮你解决sqlite本地数据库使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1172593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存