SQLite3-增删改查 转载并修改

SQLite3-增删改查 转载并修改,第1张

概述网上有许多关于SQLite的文章,但是都没有看到这种 增删改查 都具备的文章,今有幸看到,故转这在这里。 转自  http://tr4work.blog.163.com/blog/static/1371493142010199296820/ 也会附上一些常用的方法!代码全部可以运行! #import "db.h" // (下面只引用了这个实现文件,没有上传头文件,分析一下即可) //db.h文件中

网上有许多关于sqlite的文章,但是都没有看到这种 增删改查 都具备的文章,今有幸看到,故转这在这里。

转自 http://tr4work.blog.163.com/blog/static/1371493142010199296820/

也会附上一些常用的方法!代码全部可以运行!

#import"db.h" // (下面只引用了这个实现文件,没有上传头文件,分析一下即可)

//db.h文件中需要#import "sqlite3.h",项目需要导入sqlite3库。在这个目录下面,/Xcode3.1.4/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/usr/lib/libsqlite3.0.dylib


@implementationdb

@synthesizeinfo;

-(Nsstring*) paths

{

NSArray*paths =NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMaskYES);

Nsstring*documentDirectory = [pathsobjectAtIndex:0];

return[documentDirectorystringByAppendingFormat:@"data.sqlite3"];//数据库文件地址,如果不存在会自动创建

}

-(int) create//创建表方法。SQL语句部分和普通SQL语句几乎完全一样

{

intresult =sqlite3_open([[selfpaths]UTF8String],&database);//需要打开数据库

constchar*sql ="create table if not exists info(ID integer primary key,inf integer);";

char*errorMsg;

intsuccess =sqlite3_exec(database,sql,NulL,&errorMsg);//执行 *** 作。除了select外其他的都用sqlite3_exec,select用sqlite3_prepare_v2。

sqlite3_close(database);//关闭数据库

//sqlite3.m里面定义了很多状态码。每个代码块里面的success result都是接受的状态码。

if(success ==sqlITE_OK)//判断是否执行成功,true则成功,反之..也可以用result来查看数据库打开的时候是否成功。在测试的时候经常要用道这些状态码。完成测试之后可以不使用success之类的。

return22;

else

33;

}

//插入一条数据,下面部分就差不多了。查询会重新说

-(int) insert

{

database);

*sql ="insert into info(ID,inf) values((select MAX(ID) from info)+1,11);" sqlite3_close(database);

sqlITE_OK)

;

}

-(int) update

{

*sql ="update info set inf = 99 where ID = 2;" sqlite3_close(database);

int) deletes

{

intresult = sqlite3_open([[selfpaths] UTF8String],&database);

*sql ="delete from info where ID = 2;"intsuccess = sqlite3_exec(database,159)">if(success == sqlITE_OK)

;

}

-(Nsstring*) selects//对于熟悉jdbc的朋友来说,这里的理解要容易的多,这里有点想jdbc

{

*sql ="SELECT * FROM info where ID = 2";

sqlite3_stmt *statement;

intsuccess = (sqlite3_prepare_v2(database,-1,&statement,159)">NulL));

intIDs;

intinf;

intsigns =0;

//逐行取出检索出来的数据。0,1是一条纪录中的字段,例如我的表里有两个字段,ID,inf,那么一条纪录中0位置是ID,1位置是inf,如果在SQL语句中进行了指定,则按照SQL语句中的来,只是要从0开始。signs是我要用的数据,大家可忽略

while(sqlite3_step(statement) == sqlITE_ROW) {

IDs = sqlite3_column_int(statement,0);

inf = sqlite3_column_int(statement,211)">1);

signs =1;

}

sqlite3_finalize(statement);

sqlite3_close(database);

if(success == sqlITE_OK)

if(signs ==1)

return[[Nsstring alloc] initWithFormat:@"%i==%i",IDs,inf];

return@"there is no data!"

@"%IError%i",inf];

}

@end


有些时候,大家的sql并不是都想我的例子中的一样简单,可以有些里面还参杂了变量,那么我们一般的做法是

Nsstring *str = [[Nsstring alloc] initWithFormat:@"%i",11];

但是str是不在sqlite3中执行的。我们需要用char类型的。这个原因我好像忘记了....

类型转换的例子:

Nsstring *str = [[Nsstring alloc] initWithFormat: @"SELECT * FROM infos WHERE year = %i and month = %i and day = %i",year,month,day];

char *sql = [str UTF8String];

总结

以上是内存溢出为你收集整理的SQLite3-增删改查 转载修改全部内容,希望文章能够帮你解决SQLite3-增删改查 转载并修改所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存