微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLite3 代码库

首先导入sqlite3,而我们访问sqlite3需要通过一个API函数,这个函数在libsqlite3.dylib文件
我们需要把这个动态库给加入到项目

方法在Grops&Files窗格中选择Frame这个文件夹,然后从Project菜单中选择Add toproject。。。然后通过路径/Develerper/Platform/iPhonesimulator.platform/Developer/SDKs/iPhonesimulatorX.Y.Sdk/usr/lib
找到libsqlite3.dylib


在.h文件创建
#definekFilename@"data.sqlite3"
sqlite3*database;//创建数据库
- (Nsstring*)dataFilePath;//找数据库文件位置
在.m文件
1.找数据库文件
- (Nsstring *)dataFilePath{
NSArray *paths =NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory,NSUserDomainMask,YES);
Nsstring *documentsDirectory = [pathsobjectAtIndex:0];
return [documentsDirectorystringByAppendingPathComponent:kFilename];
}

2.打开数据库文件,如果还没有那么就创建一个
- (void)viewDidLoad{
if (sqlite3_open([[self dataFilePath] UTF8String],&database)!= sqlITE_OK)//打开数据库
{
sqlite3_close(database);//异常就关闭
NSAssert(0,@"Failed to open database");//设置一个断言,这样避免程序出错了,程序员还不知道
}

char *errorMsg;//设置一个错误存储器
// 创建表格名为 files 第一列为row 类型为intget并且为主键,第二列为file-data,类型为text
Nsstring *createsql = @"CREATE TABLE IF NOT EXISTS FIELDS (ROWINTEGER PRIMARY KEY,FIELD_DATA TEXT);";


//用sqlite3_exec把创建的表传递给数据库(sqlite3_exec用于执行不返回数据的操作,如更新,插入和删除操作
if (sqlite3_exec (database,[createsqlUTF8String],NULL,&errorMsg) !=sqlITE_OK)
sqlite3_close(database);
NSAssert1(0,@"Error creating table: %s",errorMsg);
//查询操作比较复杂,必须先输入命令
Nsstring *query = @"SELECT ROW,FIELD_DATA FROM FIELDS ORDER BYROW";//
sqlite3_stmt *statement;
//sqlite3_prepare_v2 准备并且检查sql语句是否完成,
if (sqlite3_prepare_v2( database,[query UTF8String],-1,&statement,nil) == sqlITE_OK)
while (sqlite3_step(statement) == sqlITE_ROW) //执行sql语句

{//单步调试并从数据库中检索到int和nsstring的
int row = sqlite3_column_int(statement,0);//column是列的意思
char *rowData = (char *)sqlite3_column_text(statement,1);
//这里定义了一个输出口名字一样的string(本例中的输出口为field1)
//然后通过控制器调用valueFoeKey这个函数来把输出口的TextField和你创建的绑定到一块
//这样你就可以直接调用输出口中的内容-----很美妙的设计方式

Nsstring *fieldName = [[Nsstring alloc]
initWithFormat:@"field%d",row];
Nsstring *fieldValue = [[Nsstring alloc]
initWithUTF8String:rowData];
UITextField *field = [self valueForKey:fieldName];
field.text = fieldValue;
[fieldName release];
[fieldValue release];
}
sqlite3_finalize(statement);

原文地址:https://www.jb51.cc/sqlite/202282.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐