在iOS中提供了SQLite的支持,这样可以通过对Sqlite的使用,实现数据的存储和管理。
处理数据库是常用操作,查找资料理解了一些对sqlite3的简单操作,记录下来,方便自己查看。
首先要导入framework,最基本的,不过也容易忘记。初次尝试使用时,就是忘了导入,还调试了好长时间,汗。。。
在AppDelegate中拷入sqlite文件:
- (void)initSys
{
NSUserDefaults *udf = [NSUserDefaults standardUserDefaults];
//只在程序首次运行时运行
if (![udf boolForKey:@"hasdatabase"]) {
//拷贝sqlite文件
....
//记录文件已存在
[udf setBool:YES forKey:@"hasdatabase"];
}
}
调用即可:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption:
(NSDictionary *)launchOptions
{
...
[self initSys];
...
}
简要说明一下SQLite数据库执行SQL语句的过程
** 调用sqlite3_prepare()将SQL语句编译为sqlite内部一个结构体(sqlite3_stmt).该结构体中包含了将要执行的的SQL语句的信息.
** 如果需要传入参数,在SQL语句中用’?'作为占位符,再调用sqlite3_bind_XXX()函数将对应的参数传入.
** 调用sqlite3_step(),这时候SQL语句才真正执行.注意该函数的返回值,SQLITE_DONE和SQLITE_ROW都是表示执行成功, 不同的是SQLITE_DONE表示没有查询结果,象UPDATE,INSERT这些SQL语句都是返回SQLITE_DONE,SELECT查询语句在 查询结果不为空的时候返回SQLITE_ROW,在查询结果为空的时候返回SQLITE_DONE.
** 每次调用sqlite3_step()的时候,只返回一行数据,使用sqlite3_column_XXX()函数来取出这些数据.要取出全部的数据需要 反复调用sqlite3_step(). (注意, 在bind参数的时候,参数列表的index从1开始,而取出数据的时候,列的index是从0开始).
** 在SQL语句使用完了之后要调用sqlite3_finalize()来释放stmt占用的内存.该内存是在sqlite3_prepare()时分配的.
** 如果SQL语句要重复使用,可以调用sqlite3_reset()来清楚已经绑定的参数.
在这一部分里,sqlite3_prepare不是很好理解,这里有部分资料。
这里给个例子,加强理解:
+ (NSUInteger) getCount:(NSString *)sCategory state:(int)iState
{
//DB_PATH为你的数据库文件路径
NSString *sDBPath = DB_PATH;
sqlite3 *database;
if (sqlite3_open([sDBPath UTF8String], &database) == SQLITE_OK) {
NSString *sSel = @"SELECT count(*) FROM table_name WHERE sCategory=?
AND iState=? ORDER BY _id";
const char *sql = [sSel UTF8String];
NSUInteger iCount = 0;
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [sCategory UTF8String], -1, NULL);
sqlite3_bind_int(statement, 2, iState);
while (sqlite3_step(statement) == SQLITE_ROW) {
iCount = (int)sqlite3_column_int(statement, 0);
}
}
sqlite3_finalize(statement);
}
else
{
sqlite3_close(database);
database = NULL;
NSAssert1(0, @"Failed to open database with message '%s', sqlite3_errmsg(database));
}
return iCount;
}
数据操作之sqlite3
精选 转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
sqlite3常规操作
在安装完Android Studio之后,在SDK/platform-tools目录下 会看到一个sqlite3.exe的可执行文件,对最最基本的操作进行交代
sqlite 数据库 sql oracle 浮点数 -
python操作sqlite3
sql
sqlite sql 数据库 sql语句 提交事务