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);

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能